首页
社区
课程
招聘
[求助]如何在NdisFilter驱动中获得网卡的MAC地址?
发表于: 2017-6-8 02:35 4740

[求助]如何在NdisFilter驱动中获得网卡的MAC地址?

2017-6-8 02:35
4740

在FilterRestart中调用filterDoInternalRequest函数,NDIS_QUERY_TYEP是NdisRequestQueryInformation, NDIS_OID是 OID_802_3_CURRENT_ADDRESS或OID_802_3_PERMANENT_ADDRESS。在虚拟机实际运行中发现NDIS会多次调用FilterRestart函数,且每次得到的MAC地址有时候是正确的,有时候是不知道是什么数值的MAC地址。还是说会有些OIDRequest会改变网卡MAC地址。求解?


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 224
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
发现共有四种MAC地址类型,调用四次FilterAttach和FilterDetach,应该是FilterDriver  Attach  到四个Miniport  Adapter,  可是又如何确定哪个Miniport  Adapter  为正在接收和发送数据包的Adapter呢?
2017-6-8 16:05
0
雪    币: 224
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3

哎 很难受 都没人帮助的。在微软文档中发现了OID_GEN_VENDOR_ID,且他说NDIS 6.0 and later miniport drivers 是强制性的, 于是向底层driver发送了该OIDRequest。发现除了在OID_802_3_CURRENT_ADDRESS OID请求中返回正确的Mac Address的Miniport Adapter返回正确的Vendor ID,其他Miniport Adapter 均返回0xFFFFFF。Microsoft Docs 中又指出

所以就可以根据OID_GEN_VENDOR_ID的返回类型是否为0xFFFFFF来判断哪一个是正确的Mac

2017-6-9 02:24
0
雪    币: 0
活跃值: (60)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
1.\\Registry\\Machine\\SOFTWARE\\Microsoft\\Windows  NT\\CurrentVersion\\NetworkCards\\
2.IoBuildDeviceIoControlRequest(IOCTL_NDIS_QUERY_GLOBAL_STATS
我是用的这种方法获取网卡MAC地址的
2017-6-9 09:04
0
雪    币: 224
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
2017-6-10 10:00
0
游客
登录 | 注册 方可回帖
返回
//