簡體   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