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

無(wú)線局域網(wǎng)NDIS小端口驅(qū)動(dòng)實(shí)現(xiàn)( 二 )


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

推薦閱讀