繁体   English   中英

NDIS版本和Windows版本之间的兼容性问题

[英]The compatibility issue between NDIS version and Windows version

大家。 我正在对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来保持最大的兼容性?

恐怕NDIS 6.3不再支持XP,这是真的吗?

如果您的意思是“在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 MSDN文档 ,则会注意到它有一个“用于Windows Vista的网络驱动程序”部分和一个“ Windows Vista之前的网络驱动程序”部分。 第一部分用于NDIS 6,第二部分用于NDIS 5(我想NDIS 4太旧了,以至于无法再进行文档记录了;我不知道NDIS 4和NDIS 5之间的区别是什么,或者WinPcap是否仍支持NDIS4。)

如果要在WinPcap中支持NDIS 6(例如,在Wi-Fi设备上支持监视器模式),则可以选择以下选项:

  • 制作不支持Windows 2000或Windows XP或其服务器版本的WinPcap版本,并且仅支持NDIS 6;
  • 为“ NT 5”(W2K / WXP及其服务器版本)和“ NT 6”(Vista,7、8及其服务器版本)分别制作WinPcap驱动程序和packet.dll库的版本,并给出包的两个版本。 dll具有相同的API(例如,使用“ NT 5”版本,返回尝试将接口置于监视模式的失败指示),并使用该API的wpcap.dll(即WinPcap的“ libpcap”部分) ,并让安装程序确定要安装哪一个(这意味着如果将“ NT 5”系统升级到“ NT 6”(例如,将Windows XP升级到Windows Vista,则必须重新安装WinPcap才能获得NDIS 6功能) 7或8),或者在可能的情况下在加载驱动程序时以某种方式运行正确的驱动程序代码。

请注意,顺便说一句,如果您的目标是在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驱动程序(因而不具有支持显示器模式NDIS驱动程序6),甚至那些确实有支持Native 802.11不一定有免费的错误,使本机802.11东西做工精良的NDIS驱动6 NDIS驱动6。

另外,还要注意,本机802.11驱动程序在监视模式下提供的“无线电信息”标头与pcap和pcap-ng支持的所有现有“无线电信息”标头不同,因此您需要请求一个来自tcpdump-workers@lists.tcpdump.org的“无线电信息”标题的新LINKTYPE_ / DLT_值。 Wireshark已经有了一个分解器,因为它可以从Microsoft Network Monitor读取802.11捕获。 tcpdump将需要一个。

(如果出于其他原因执行此操作,例如添加对PPP设备的支持或修复代码以获取供应商的设备描述,则可能还需要使NDIS 6驱动程序成为轻量级筛选器驱动程序或诸如此类的东西,而不是运输司机。)

要补充盖伊所说的话……XP不能而且从来不支持NDIS 6,因此创建具有XP兼容性的NDIS 6驱动程序的要求是不可能的。 您必须更改要求; Guy的两个选项都不错(放弃XP支持,或维护并行的5.1和6.0驱动程序)。

从体系结构上讲,应在NDIS 6 LWF中完成数据包捕获(而不是将协议驱动程序与回送数据包一起使用)。 我建议从一个干净的空LWF(请参阅示例 )开始,并添加WinPcap的数据包捕获功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM