监听以太网 Packet32包说明
2010-07-11 20:44:45 来源:WEB开发网这个函数的操作大致为:
网卡的注册表项是:
HKEY_LOCAL_MACHINE\
SYSTEM\
CurrentControlSet\
Control\
Class\
{4D36E972-E325-11CE-BFC1-08002BE10318}
先打开这个键值;
再枚举下面的每一项,依次读取参数:
对子项\Linkage\UpperBind参数,核对是否等于” NdisWan”,如果不是,就跳过去;
如果是” NdisWan”,则读取子项\Linkage\Export,这就是网卡的名字。
如果前面的查询有网卡记录,那么执行下面这个循环:
将调用PacketOpenAdapter打开每个网卡;
其中将调用PacketRequest(adapter,FALSE,OidData)来得到网卡的描述;
具体方法是这样,OidData是一个PACKET_OID_DATA结构,我们事先设置它的Oid成员为OID_GEN_VENDOR_DESCRIPTION,然后调用PacketRequest把这个OID发送给网卡driver,就可以从OidData->Data中拿到网卡的描述了。
最后调用PacketCloseAdapter关闭适配器。
如果前面没有查询到网卡记录,那么执行我们将根据TCP/IP Binding来查找网卡:
先打开这个键值;
HKEY_LOCAL_MACHINE\
SYSTEM\
CurrentControlSet\
Services\
Tcpip\
Linkage
它的Bind参数设置的就是现在系统上绑定的网卡的名字。
得到名字之后,同上调用PacketOpenAdapter和PacketRequest方法向网卡查询它的描述。
(To be continued)
Writen by zhengyun@tomosoft.com
本文档所包含的信息代表了在发布之日,ZhengYun 对所讨论问题的当前看法,Zhengyun 不保证所给信息在发布之日以后的准确性。
本文档仅供参考。对本文档中的信息,Zhengyun 不做任何明示或默示的保证。
参考文献:
1.如何编写网络监视器 作者:邹建平
2.《Windows NT下开发网络监控程序》 作者:北京锐信科学技术培训中心
更多精彩
赞助商链接