C++ NDIS版本与Windows版本之间的兼容性问题

C++ NDIS版本与Windows版本之间的兼容性问题,c++,driver,compatibility,winpcap,ndis,C++,Driver,Compatibility,Winpcap,Ndis,各位。我正在修改WinPcap,一个包捕获库。我的老板想让我把WinPcap的NDIS版本从NDIS 4传输到NDIS 6。兼容性要求是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版本以保持最

各位。我正在修改WinPcap,一个包捕获库。我的老板想让我把WinPcap的NDIS版本从NDIS 4传输到NDIS 6。兼容性要求是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了,这是真的吗

如果你的意思是使用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和更高版本

如果你看一下,你会注意到它有一个以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的两个版本提供与NT 5版本相同的API,例如,返回尝试将接口置于监视模式的失败指示,让wpcap.dll,即WinPcap的libpcap部分使用该API,并让安装程序确定要安装哪一个,这意味着您必须重新安装WinPcap才能获得NDIS 6功能,如果您将NT 5系统升级到NT 6,例如将Windows XP升级到Windows Vista,7,或者8,或者在加载驱动程序时以某种方式运行正确的驱动程序代码,如果可能的话。 请注意,顺便说一句,如果您的目标是支持NDIS设备上的监控模式,强烈建议您实现libpcap中已经存在的用于监控模式的API,即用于打开设备的pcap\u创建/pcap\u激活API,用于请求监控模式的pcap\u设置\u rfmon API,pcap可以设置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驱动程序,即使那些拥有支持本机802.11的NDIS 6驱动程序的公司也不一定拥有没有使本机802.11工作正常的bug的NDIS 6驱动程序

此外,还请注意,由本机802.11驱动程序在监视模式下提供的无线电信息头与pcap和pcap ng支持的所有现有无线电信息头不同,您需要从tcpdump请求该无线电信息头的新LINKTYPE_/DLT_值-workers@lists.tcpdump.org. Wireshark已经有了一个剖析器,因为它可以从微软网络监视器读取802.11捕获;tcpdump将需要一个

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

恐怕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和更高版本

如果y 你看,你会注意到它有一个以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的两个版本提供与NT 5版本相同的API,例如,返回尝试将接口置于监视模式的失败指示,让wpcap.dll,即WinPcap的libpcap部分使用该API,并让安装程序确定要安装哪一个,这意味着您必须重新安装WinPcap才能获得NDIS 6功能,如果您将NT 5系统升级到NT 6,例如将Windows XP升级到Windows Vista,7,或者8,或者在加载驱动程序时以某种方式运行正确的驱动程序代码,如果可能的话。 请注意,顺便说一句,如果您的目标是支持NDIS设备上的监控模式,强烈建议您实现libpcap中已经存在的用于监控模式的API,即用于打开设备的pcap\u创建/pcap\u激活API,用于请求监控模式的pcap\u设置\u rfmon API,pcap可以设置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驱动程序,即使那些拥有支持本机802.11的NDIS 6驱动程序的公司也不一定拥有没有使本机802.11工作正常的bug的NDIS 6驱动程序

此外,还请注意,由本机802.11驱动程序在监视模式下提供的无线电信息头与pcap和pcap ng支持的所有现有无线电信息头不同,您需要从tcpdump请求该无线电信息头的新LINKTYPE_/DLT_值-workers@lists.tcpdump.org. Wireshark已经有了一个剖析器,因为它可以从微软网络监视器读取802.11捕获;tcpdump将需要一个


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

要补充Guy所说的内容。。。XP不能也从来没有支持过NDIS 6,因此您不可能要求创建与XP兼容的NDIS 6驱动程序。你必须改变要求;盖伊的两个选择都是很好的放弃XP支持,或者维护并行的5.1和6.0驱动程序


在体系结构上,数据包捕获应该在NDIS 6 LWF中完成,而不是使用带有环回数据包的协议驱动程序。我建议从一个干净、空的LWF开始,查看并添加WinPcap的数据包捕获功能。

要添加Guy所说的内容。。。XP不能也从来没有支持过NDIS 6,因此您不可能要求创建与XP兼容的NDIS 6驱动程序。你必须改变要求;盖伊的两个选择都是很好的放弃XP支持,或者维护并行的5.1和6.0驱动程序


在体系结构上,数据包捕获应该在NDIS 6 LWF中完成,而不是使用带有环回数据包的协议驱动程序。我建议从一个干净、空的LWF开始,请参阅并添加WinPcap的数据包捕获功能。

当支持95/98/Me时,并行驱动程序方案用于支持Windows 95/98/Me和NT,因此这种方案有先例。是否有一个单一的NDIS版本支持从XP到8的所有平台?我知道WDK7.1.0发布的NDIS同时支持XP和Win7。我不知道它的NDIS版本,也许是5.1?Win8是否支持NDIS 5.1驱动程序?以下是MS for WDK7.1.0的链接:当支持95/98/Me时,并行驱动程序方案用于支持Windows 95/98/Me和NT,因此这种方案有先例。是否有一个NDIS版本支持从XP到8的所有平台?我知道NDIS是和
WDK7.1.0同时支持XP和Win7。我不知道它的NDIS版本,也许是5.1?Win8是否支持NDIS 5.1驱动程序?以下是来自MS for WDK7.1.0的链接:是否有一个NDIS版本支持从XP到8的所有平台?我知道WDK7.1.0发布的NDIS同时支持XP和Win7。我不知道它的NDIS版本,也许是5.1?Win8是否支持NDIS 5.1驱动程序?以下是来自MS的WDK7.1.0链接:是。它叫NDIS 5。WinPcap有一个NDIS 5驱动程序,支持W2K到8。然而,没有一个单一的NDIS版本1支持从XP到8的所有平台,2让希望您使用NDIS 6的老板感到高兴。例如,没有一个NDIS版本1支持从XP到8的所有平台,2支持本机802.11,因此可以在监视模式下进行捕获。是否有一个NDIS版本支持从XP到8的所有平台?我知道WDK7.1.0发布的NDIS同时支持XP和Win7。我不知道它的NDIS版本,也许是5.1?Win8是否支持NDIS 5.1驱动程序?以下是来自MS的WDK7.1.0链接:是。它叫NDIS 5。WinPcap有一个NDIS 5驱动程序,支持W2K到8。然而,没有一个单一的NDIS版本1支持从XP到8的所有平台,2让希望您使用NDIS 6的老板感到高兴。例如,没有NDIS版本1支持从XP到8的所有平台,2支持本机802.11,因此您可以在监视模式下捕获。