[英]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設備上支持監視器模式),則可以選擇以下選項:
請注意,順便說一句,如果您的目標是在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.