恐怕 NDIS 6.3 不再支持 XP,是这样吗?
如果您的意思是“使用 NDIS 6.3 的驱动程序能否在 Windows XP 上运行”,答案是“否”,并且一直是“否”;这不是“不再”的情况。
给定版本的 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 是否仍然支持 NDIS 4。)
如果您想在 WinPcap 中支持 NDIS 6(例如,支持 Wi-Fi 设备上的监控模式),您的选择是:
- 制作不支持 Windows 2000 或 Windows XP 或其服务器版本且仅支持 NDIS 6 的 WinPcap 版本;
- 为“NT 5”(W2K/WXP 及其服务器版本)和“NT 6”(Vista、7、8 及其服务器版本)制作单独版本的 WinPcap 驱动程序和 packet.dll 库,给出两个版本packet.dll 相同的 API(例如,“NT 5”版本,返回失败指示以尝试将接口置于监控模式),并具有 wpcap.dll(即 WinPcap 的“libpcap”部分)使用该 API,并让安装程序确定要安装哪一个(这意味着如果您将“NT 5”系统升级到“NT 6”,例如将 Windows XP 升级到Windows Vista、7 或 8)或以某种方式在加载驱动程序时运行正确的驱动程序代码(如果可能的话)。
顺便提一下,如果您的目标是在 NDIS 设备上支持监控模式,则非常强烈建议您实现已经存在的 API监控模式的libpcap,即打开设备的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 的 NDIS 6 驱动程序-Fi(因此没有支持监视器模式的 NDIS 6 驱动程序),甚至那些确实有支持本机 802.11 的 NDIS 6 驱动程序的 NDIS 6 驱动程序也不一定有没有错误的 NDIS 6 驱动程序Native 802.11 的东西运行良好。
此外,还要注意,本机 802.11 驱动程序在监视模式下提供的“无线电信息”标头与 pcap 和 pcap-ng 支持的所有现有“无线电信息”标头不同,您需要从 tcpdump-workers@lists.tcpdump.org 为该“无线电信息”标头请求新的 LINKTYPE_/DLT_ 值。 Wireshark 已经有一个解析器,因为它可以从 Microsoft Network Monitor 读取 802.11 捕获; tcpdump 将需要一个。
(如果您这样做是出于其他原因,例如添加对 PPP 设备的支持或修复代码以获取供应商的设备描述,则可能还需要使 NDIS 6 驱动程序成为轻量级过滤器驱动程序或诸如而不是运输司机。)