首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NDIS版本与Windows版本的兼容性问题

NDIS版本与Windows版本的兼容性问题
EN

Stack Overflow用户
提问于 2013-06-11 14:38:33
回答 2查看 3.6K关注 0票数 1

所有人。我正在对WinPcap做一些修改,这是一个数据包捕获库。老板要我把WinPcap的NDIS4版本转换成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才能保持最广泛的兼容性?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-11 15:56:49

恐怕NDIS6.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之前的网络驱动程序”;第一部分用于NDIS6,第二部分用于NDIS5。(我想,NDIS4被认为太老了,不能再费心编写文档了;我不知道NDIS4和NDIS5之间有什么区别,也不知道WinPcap是否仍然支持NDIS4。)

如果要在WinPcap中支持NDIS6(例如,支持Wi-Fi设备上的监控模式),您可以选择:

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

注意,顺便说一句,如果您的目标是在NDIS设备上支持监视模式,那么强烈建议您实现用于监视模式的libpcap中已经存在的API,即用于打开设备的pcap_create()/pcap_activate() API、用于请求监视模式的pcap_set_rfmon() API以及用于检查是否可以打开监视模式的Wireshark,因为这些API是tcpdump和Wireshark等程序所期望的。

还要注意,pcap_create()/pcap_activate() API当前不能处理远程数据包捕获,因此您要么放弃该功能,要么等待我(或其他人)将这些功能添加到这些API中。

另请注意,据报道,虽然NDIS 6有支持监控模式的API,但并不是所有Wi-Fi设备都有NDIS 6驱动程序,并不是所有具有NDIS 6驱动程序的设备都有支持Native Wi-Fi的NDIS 6驱动程序(因此没有支持监控模式的NDIS 6驱动程序),即使是那些具有支持Native 802.11的NDIS 6驱动程序的设备也不一定有NDIS 6驱动程序,这些驱动程序不一定没有使Native 802.11工作良好的bug。

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

(如果您出于某些其他原因这样做,例如添加对PPP设备的支持或修复代码以获取供应商的设备描述,则可能还需要使NDIS 6驱动程序成为轻量级筛选器驱动程序或类似的驱动程序,而不是传输驱动程序。)

票数 4
EN

Stack Overflow用户

发布于 2013-06-12 01:52:14

除了盖伊说的..。XP不能也从未支持过NDIS 6,因此创建与XP兼容的NDIS 6驱动程序的要求是不可能的。您必须更改要求;Guy的两个选项都是好的(放弃XP支持,或保留并行5.1和6.0驱动程序)。

从体系结构上讲,数据包捕获应该在NDIS6 LWF中完成(并且不使用具有回送数据包的协议驱动程序)。我建议从一个干净的、空的LWF开始(请参阅sample),并添加来自WinPcap的数据包捕获功能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17037907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档