摘要:為了在Windows下實現USB網卡驅動程序,本文根據NDIS_WDM驅動模型,分析了NDIS_WDM模型的內在運行機制,提出了一個USB網卡驅動的設計方案,并重點討論了NDIS和USB設備棧的交互過程,圍繞這個過程,使用Windows DDK 2003開發包及VC開發工具,寫出了USB網卡驅動程序的初始化和發送接收過程的關鍵代碼。實現了對CY3681評估板的發送接收操作。
關鍵詞:WDM;NDIS;WDM-NDIS;usb類驅動;網卡驅動
1 引言
USB(Universal Serial Bus)即通用串行總線,正在成為各種新型設備的標準總線,USB的傳輸速度已由USB1.0的12Mbps提高到了USB2.0的480Mbps,同時USB設備具有即插即用的特點,所以它越來越受到業界的重視。
基于PCI總線的網卡一般符合NDIS體系結構,在臺式機上應用廣泛。隨著計算機的微型化發展,要求設備具即插即用的特點,這種傳統PCI的網卡已不能適應新的需要,因此開發一種基于USB的網卡便有重大的意義。這種網卡驅動程序遵循NDIS_WDMW體系結構。它結合了NDIS(Network Driver Interface Specification)和WDM(Win32 Driver Model)兩種體系結構的特點。本文將探討NDIS_WDM驅動程序體系結構特點,及USB網卡驅動實現的有關問題。
2 基于WDM-NDIS體系的USB網卡的設計原理
2.1 系統結構
NDIS體系結構獨立于硬件,用戶可以將不同的協議和不同的網卡綁定進而完成不同的功能。使網絡協議更具有通用性[3]。
NDIS支持三種類型的驅動程序,從下往上向看,他們分別是微端口驅動程序、中間層驅動程序和協議驅動程序。傳統的PCI網卡驅動程序位于NDIS的第三層,屬于微端口驅動程序(Miniport Driver) ,它有兩個基本功能:
管理一個網絡接口卡NIC(Network Interface Card),包括通過NIC發送和接收數據。與高層驅動程序相接[1]。
但是基于USB的網卡驅動程序和傳統PCI網卡驅動最大的差別是NDIS下層的基礎不同。……