大家。我正在对WinPcap(一个数据包捕获库)进行一些修改。我的老板要我将WinPcap的NDIS版本从NDIS 4转移到NDIS6。兼容性要求是Windows XP / Vista / 7/8(32位和64位)。我发现NDIS的最新版本是6.3,但是我担心NDIS 6.3不再支持XP,是真的吗?我还在WinPcap网站上发现当前的WinPcap 4.1.3已经支持Windows XP / 2003 / Vista / 2008 / Win7 / 2008R2 / Win8(x86和x64)。这样对吗?我应该更新哪个版本的NDIS来保持最大的兼容性?
最佳答案
如果您的意思是“在Windows XP上使用NDIS 6.3的驱动程序可以运行”,答案为“否”,并且始终为“否”;这不是“更多”的情况。
Windows的给定版本支持NDIS的给定版本(反之则不行)。 “NT 5.x”(即Windows 2000,Windows XP及其等效服务器)支持NDIS 5; NDIS 6驱动程序(甚至NDIS 6.0)在这些版本的Windows上也无法使用。 NDIS 6驱动程序需要“NT 6.x”,即Windows Vista和更高版本。
如果您查看Microsoft's MSDN documentation on network drivers,您会注意到它有一个“用于Windows Vista的网络驱动程序”部分和一个“Windows Vista之前的网络驱动程序”部分。第一部分用于NDIS 6,第二部分用于NDIS 5(我想NDIS 4太旧了,以至于无法再进行文档记录;我不知道NDIS 4和NDIS 5之间的区别是什么,或者WinPcap是否仍支持NDIS4。)
如果要在WinPcap中支持NDIS 6(例如,在Wi-Fi设备上支持监视器模式),则可以选择以下选项:
请注意,顺便说一句,如果您的目标是在NDIS设备上支持监视模式,则非常强烈建议您实现libpcap中已存在的用于监视模式的API,即用于打开设备的
pcap_create()
/ pcap_activate()
API ,用于请求监视模式的pcap_set_rfmon()
API和用于检查是否可以打开监视模式的pcap_can_set_rfmon()
API,因为这些API是tcpdump和Wireshark等程序所期望的。还要注意
pcap_create()
/ pcap_activate()
API当前不处理远程数据包捕获,因此您要么必须放弃该功能,要么等我(或某人)将这些功能添加到这些API中。另请注意,据报道,虽然NDIS 6具有支持监视器模式的API,但并非所有Wi-Fi设备都具有NDIS 6驱动程序,并非所有具有NDIS 6驱动程序的设备都具有支持本机Wi-Fi(因此没有支持监视模式的NDIS 6驱动程序),甚至那些具有支持本机802.11的NDIS 6驱动程序的驱动程序也不一定具有没有使本机802.11正常工作的错误的NDIS 6驱动程序。
另外,还请注意,本机802.11驱动程序在监视模式下提供的“ radio 信息” header 与pcap和pcap-ng支持的所有现有“ radio 信息” header 不同,您需要请求一个来自[email protected]的“ radio 信息” header 的新
LINKTYPE_
/ DLT_
值。 Wireshark已经有了一个分解器,因为它可以从Microsoft Network Monitor读取802.11捕获。 tcpdump将需要一个。(如果您出于其他原因执行此操作,例如添加对PPP设备的支持或修复代码以获取供应商的设备描述,则可能还需要使NDIS 6驱动程序成为轻量级筛选器驱动程序或诸如此类,而不是诸如此类。运输司机。)
关于c++ - NDIS版本和Windows版本之间的兼容性问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17037907/