WEB开发网
开发学院软件开发VC 监听以太网(2) Packet32包说明续 阅读

监听以太网(2) Packet32包说明续

 2010-07-11 20:44:43 来源:WEB开发网   
核心提示:如果可以连接SCM,检查NPF注册表项是否存在,监听以太网(2) Packet32包说明续(2),如果存在,说明driver已经安装了,本文档仅供参考,对本文档中的信息,就不需要我们调用PacketInstallDriver了,NPF注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentContr

如果可以连接SCM,检查NPF注册表项是否存在。如果存在,说明driver已经安装了,就不需要我们调用PacketInstallDriver了。

NPF注册表项:

HKEY_LOCAL_MACHINE\

SYSTEM\

CurrentControlSet\

Services\

NPF

如果不存在此键,则调用PacketInstallDriver安装当前路径下的driver:npf.sys。

如果这次PacketInstallDriver安装也失败了,就到系统路径下查找并安装这个驱动。

如果以上操作都成功的话,调用OpenService打开NPF服务。如果服务存在的话,就调用QueryServiceStatus查询当前服务状态。这就是我们的driver的状态。

如果这个服务没有启动,就调用StartService启动之。

确认服务启动之后,检查AdapterName是否是ASCII编码,是的话,就转换为Unicode。

由于一般输入参数AdapterNAme类似于这样:

\Device\NPF_{A67CEC3B-C099-47E0-B096-480B01FAF348}

所以,我们会重新组织一个设备名SymbolicLink:

“Packet_”的前缀 + AdapterName[8]

也就是:

\\.\Packet_NPF_{A67CEC3B-C099-47E0-B096-480B01FAF348}

先尝试着CreateFile函数能不能马上用这个SymbolicLink名字打开设备。

如果可以,就调用PacketSetReadEvt函数打开一个open事件等。

否则,调用DefineDosDevice定义一个新的MS-DOS设备:

名字类似于” Packet_NPF_{A67CEC3B-C099-47E0-B096-480B01FAF348}”。

通过这个DOS设备名,我们的应用层程序才能向驱动发出请求。

接着,调用CreateFile函数来建立并打开一个联系设备的文件句柄(GENERIC_WRITE| GENERIC_READ,OPEN_EXISTING)。

之后,调用PacketSetReadEvt函数打开一个open事件等。

(To be continued)

Writen by zhengyun@tomosoft.com

本文档所包含的信息代表了在发布之日,ZhengYun 对所讨论问题的当前看法,Zhengyun 不保证所给信息在发布之日以后的准确性。

本文档仅供参考。对本文档中的信息,Zhengyun 不做任何明示或默示的保证。

上一页  1 2 

Tags:监听 以太网 Packet

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接