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

無線局域網(wǎng) NDIS 小端口驅動實現(xiàn)( 二 )


(2)從注冊表讀取網(wǎng)卡地址 。
(3)注冊適配器的類型,如指定設備為 NdisInterfacePcMcia,代表網(wǎng)卡為PCMCIA標準的PC Card 。這里需要強調的是PCMCIA接口的配置存儲器和功能寄存器都是由主機自行維護的,雖然驅動程序也可以讀寫配置存儲器和功能寄存器,但這樣做會導致系統(tǒng)工作的不一致,除非非凡需要,驅動程序無需讀寫配置存儲器和功能寄存器 。
(4)選擇并注冊IO端口 。
(5)選擇并注冊中斷 。
(6)設定網(wǎng)卡所支持的包種類,如廣播中的多播等 。
(7)設定網(wǎng)卡的MAC屬性,如網(wǎng)卡是否支持環(huán)回等 。
(8)初始化網(wǎng)卡硬件使其進入工作狀態(tài) 。該工作由wlan_drvAdapter::CardInit()完成 。主要是設置相應的寄存器,讀取永久網(wǎng)卡地址等 。
(9)初始化自定義變量 。
5 發(fā)送數(shù)據(jù)
當需要發(fā)送數(shù)據(jù)包時,NDIS調用MiniportSend 函數(shù),對應本設計中wlan_drvAdapter::Send函數(shù) 。假如當前沒有數(shù)據(jù)包正在被發(fā)送,則調用 CopyDataDown(Packet)將數(shù)據(jù)發(fā)送給NIC,否則將數(shù)據(jù)插入發(fā)送隊列 。當中斷產生后,發(fā)現(xiàn)代表網(wǎng)卡預備好接收下一個包,此時將數(shù)據(jù)包出列 。
CopyDataDown(Packet)函數(shù)與具體的網(wǎng)卡實現(xiàn)有關 。
6 接收數(shù)據(jù)
由于本設計中的網(wǎng)卡是程控I/O的網(wǎng)卡,速度較慢 。每次產生中斷時,假如發(fā)現(xiàn)NIC上緩存了一個數(shù)據(jù)包需要接收,則通過NdisMEthIndicateReceive 通知給NDIS,對應于m_Lookahead.In di cate函數(shù) 。假如是DMA設備,可以一次將整個數(shù)據(jù)包通知給上層,對于PIO方式的NIC,DDK建議只通知部分數(shù)據(jù),然后讓NDIS調用MiniportTransferData來讀取余下的數(shù)據(jù) 。當然NDIS也許對該數(shù)據(jù)不感愛好,就不會讀剩下的數(shù)據(jù) 。
7 中斷處理
與中斷處理有關的函數(shù)包括中斷服務程序 wlan_drvAdapter::Isr和延遲過程調用函數(shù)wlan_drvAdapter::HandleInterrupt 。
中斷服務程序Isr工作在DIRL,會搶斷工作在更低中斷優(yōu)先級的線程,所以應該盡快退出 。該程序的主要任務是判定中斷當前是否是本網(wǎng)卡產生的,假如沒有應該將*InterruptRecognized 設定為FALSE,并退出程序 。假如是,則將中斷處理程序HandleInterrupt插入DPC列隊,以在Passive Level上進一步處理中斷 。
中斷處理程序是真正處理中斷的函數(shù),它完成所有數(shù)據(jù)處理工作,它需要處理包括與統(tǒng)計信息有關的接收數(shù)據(jù)、發(fā)送數(shù)據(jù)等所有中斷 。
8 結論
網(wǎng)絡設備驅動程序是無線局域網(wǎng)網(wǎng)絡接口卡實現(xiàn)的要害部分,它與傳統(tǒng)的以太網(wǎng)卡稍有不同,但網(wǎng)卡與主機之間數(shù)據(jù)通信的基本格式與以太線網(wǎng)卡是相同的 。本文首先介紹了小端口驅動程序的特點,然后給出了基于DriverStudio開發(fā)PCMCIA接口程控I/O方式工作的無線局域網(wǎng)網(wǎng)卡的NDIS小端口驅動程序,其主體部分中包括驅動程序框架、驅動程序的初始化、發(fā)送和接收數(shù)據(jù)和中斷處理在內的要害技術細節(jié) 。本文所設計的網(wǎng)卡已經(jīng)在原型網(wǎng)卡中運行,基本滿足了設計要求 。

推薦閱讀