gpt4 book ai didi

c++ - NDIS版本与Windows版本的兼容性问题

转载 作者:行者123 更新时间:2023-11-30 01:22:02 26 4
gpt4 key购买 nike

每个人。我正在对数据包捕获库 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 以保持最广泛的兼容性?

最佳答案

I'm afraid that NDIS 6.3 does not support XP any more, is this true?



如果您的意思是“使用 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 库,给出两个版本的数据包。 dll 相同的 API(例如,对于“NT 5”版本,返回尝试将接口(interface)置于监视模式的失败指示),并使用该 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 驱动程序的设备都具有支持 native Wi-Fi 的 NDIS 6 驱动程序(因此没有支持监视器模式的 NDIS 6 驱动程序),即使那些确实有支持 native 802.11 的 NDIS 6 驱动程序的驱动程序也不一定有没有使 native 802.11 工作正常的错误的 NDIS 6 驱动程序。

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

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

    关于c++ - NDIS版本与Windows版本的兼容性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17037907/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com