日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

無線局域網 NDIS 小端口驅動實現


1 引言
無線局域網經過幾年的發(fā)展,在技術上已經日漸成熟 。尤其是IEEE推出802.11-1999和802.11b以來,應用也日漸廣泛 。無線局域網硬件實現的兩大主要部分是基帶處理器和MAC控制器,軟件部分包括驅動網卡本身工作的嵌入式軟件和網絡設備驅動程序 。在本文中,首先介紹了小端口驅動程序的基本要點,然后給出了基于Driver Studio開發(fā)PCMCIA接口編程I/O(Programmed IO)方式工作的無線局域網網卡NDIS(網絡驅動程序接口標準),并討論了小端口驅動程序實現過程中的若干要害技術的細節(jié) 。
2 小端口驅動程序
在典型的網絡中,如以太網LLC子層及其上層協(xié)議均由軟件實現,MAC及其以下層協(xié)議由硬件實現 。微軟Windows操作系統(tǒng)下的網絡設備驅動程序遵守NDIS規(guī)范,它在分層的網絡驅動程序框架中規(guī)定了一個標準接口,從而使抽象低層次的硬件提供了高層次網絡上的網絡治理 。因此,該規(guī)范極大簡化了設備特定網絡驅動程序的開發(fā) 。
NDIS還用于網絡驅動器的狀態(tài)信息和參數的維護,包括函數的指針、句柄、鏈接的參數塊和其他的一些系統(tǒng)變量 。NDIS規(guī)范下的網絡驅動程序分為三類:小端口驅動程序、中間驅動程序和協(xié)議驅動程序 。普通網卡的驅動程序都是小端口驅動程序,它有兩種基本功能:治理一個網絡接口卡(NIC),包括通過NIC收、發(fā)數據;與高級驅動程序接口(如中間驅動程序和傳輸協(xié)議驅動程序) 。一個小端口NIC驅動程序通過NDIS庫和它的NIC與高層驅動程序相互通訊 。NDIS庫 導出一個完全的函數集合(NdisXXX函數),來裝入小端口需要調用的操作系統(tǒng)函數 。然后,小端口必須導出一套MiniportX xx函數的實體指針,可供NDIS自己使用或代替高層驅動程序訪問小端口 。
關于網絡設備驅動程序和Windows驅動程序模型,感愛好的讀者可以參考文獻[3] 。
3 無線網卡驅動程序框架
標準的驅動程序都是C語言寫的,Nu Mega公司卻通過引入C和封裝基本的函數庫簡化了驅動程序的設計 。
使用DriverStudio編寫網絡驅動程序,首先需要使用NetworkDriver Wizard生成驅動程序的框架 。該框架生成兩個驅動程序的基本類:一個是 wlan_drvDriver,它是KndisMiniDriver的繼續(xù)類;另一個驅動程序必須且只有一個KndisMiniDriver的繼續(xù)類 。wlan_drvDriver的定義如下
class wlan_drvDriver : protected
KNdisMiniDriver
{
protected:
// must implement the entry point
NTSTATUS DriverEntry(IN PVOID RegistryPath);
};
NTSTATUS wlan_drvDriver::DriverEntry(IN PVOID)
{
TRACE("wlan_drvDriver::DriverEntry Com piled at " __TIME__ " on " __DATE__ "n");
KNDIS_MINIPORT_CHARACTERISTICS Chars;
return Chars.Register(*this);
}
wlan_drvDriver的唯一工作是定義DriverEntry 。操作系統(tǒng)通過該函數得知驅動程序的入口 。DriverEntry例化NetworkDriver Wizard生成的另外一個類wlan_drvAdapter,并將本驅動程序注冊 。
wlan_drvDriver類不用開發(fā)者干預 。開發(fā)者需要關心的是另外一個類wlan_drvAdapter,它是KndisMiniAdapter的子類 。
4 驅動程序的初始化
wlan_drvAdapter類的實現是整個驅動程序的主體部分,包括初始化驅動程序、發(fā)送數據、接收數據、中斷處理、網卡復位等 。
驅動程序在被裝入操作系統(tǒng)后的第一步工作是進行初始化 。該工作由wlan_drv Adapter::Initialize函數完成 。該函數完成的工作如下:
(1)選擇媒體類型 。對于無線局域網為 NdisMedium802_3,而不是NdisMedium-WirelessWan 。聲明為 NdisMediumWirelessWan將支持各種無線媒體類型,NdisMedium802_3原本為以太網設計,這里無線局域網似乎應該聲明為NdisMediumWirelessWan媒體類型,但事實并不是這樣 。通過查詢OID_GEN_PHYSICAL_MEDIUM,協(xié)議驅動程序可以得知物理媒體為NdisPhysical-MediumWirelessLan類型 。

推薦閱讀