




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、windowsnt環境下fddi網卡驅動程序設計2indsnt環境下fddi網卡驅動程序設計2第三階段:獲取注冊庫中各種控制信息,如用戶定義的非頁內存大小;第四階段:初始化注冊庫registryahine下syste和hardare并創立urrentntrlset,為裝入相關硬件設備驅動程序作準備;第五階段:裝入根本核心驅動程序;第六階段:釋放一些已經完成使命的裝入初始數據塊;第七階段:進一步初始化注冊庫,以便有些依賴于根本核心驅動程序的上層驅動程序能順利裝入;第八階段:效勞控制器裝入應該由該效勞控制器裝入的各種驅動程序。2.2.2fddi網卡驅動程序的加載過程在indsnt啟動的第五個階段,
2、將加載核心驅動程序。而對于ndis網卡驅動程序是在ndis接口ndis.sys加載后調入運行,向ndisrapper注冊、初始化、查詢設置參數等。indsnt啟動時,相應的實體如nt的效勞控制器根據注冊庫中yhfddi驅動程序的配置注冊信息,初始化ndisrapper,并裝入相應的驅動程序,生成驅動程序管理塊構造,申請內存以保存各種信息,向ndisrapper注冊驅動程序。初始化和注冊完畢后,再由效勞控制器讀取注冊庫中相應的鏈接信息。在ndisrapper和yhfddi驅動程序初始化和注冊成功后,ndisrapper根據系統相應的注冊信息,參加和yhfddi驅動程序所對應的fddi網卡,同時讀
3、入網卡的注冊信息,并進展網卡注冊和網卡初始化。在以上過程成功后,rapper將查詢和設置驅動程序的各種參數,理解驅動程序對哪些操作支持,決定對上層驅動程序的支持范圍。第三節fddi網卡驅動程序的注冊driverentry函數是indsntddk規定的核心驅動程序的入口點,rapper識別到入口點后,調入驅動程序,在driverentry函數內完成兩個根本注冊任務:調用ndisinitializeapper函數向ndis接口報告驅動程序將以iniprt類網卡驅動程序注冊。ndis建立它需要記錄的驅動程序狀態信息,同時返回ndisrapperhandle,驅動程序保存這個句柄,以利后來調用ndis
4、xxxnfiguratin和initializatin等函數。填寫ndisxx_iniprt_harateristis屬性構造,主要記錄ndis版本號和驅動程序支持的iniprtxxx函數的入口點,然后調用ndisregisteriniprt函數實現驅動程序的整體注冊。以yhfddi為例所要注冊的屬性構造的內容大致如下:ndis_iniprt_harateristisyhfddihar;(ndis_iniprt_harateristis這個構造將在第三章介紹)yhfddihar.ajrndisversin=yhfddi_ndis_ajr_versin;yhfddihar.inrndisvers
5、in=yhfddi_ndis_inr_versin;這兩個屬性決定驅動程序是ndis的哪個版本所支持,我們所用的是ndis3.0yhfddihar.disablEinterrupthandler=yhfddidisableinterrupt;yhfddihar.enableinterrupthandler=yhfddienableinterrupt;yhfddihar.isrhandle=yhfddiinterruptservie;yhfddihar.handleinterrupthandler=yhfddihandleinterrupt;以上四項屬性是中斷處理所需的上邊緣效勞函數的入口點句柄
6、。fddi網卡驅動程序需要有st站管理功能,而st是以中斷處理方式進展的,故這四項屬性在fddi網卡驅動程序中是很重要的。yhfddihar.initializehandler=yhfddiinitialize;此項注冊的是驅動程序的初始化函數句柄。yhfddihar.queryinfratinhandler=yhfddiqueryinfratin;yhfddihar.setinfratinhandler=yhfddisetinfratin;這兩項注冊的是參數查詢和設置函數的句柄。yhfddihar.sendhanler=yhfddisend;yhfddihar.transferdatahan
7、dler=yhfdditransferdata;主要提供數據發送和接收函數句柄。yhfddihar.resethandler=yhfddireset;此項注冊網卡軟硬件重置函數句柄。yhfddihar.halthandler=yhfddiha此項注冊網卡驅動程序掛起函數句柄。yhfddihar.hekfrhandler=null;yhfddihar.renfigurehandler=null;這兩個上邊緣效勞函數是fddi網卡驅動程序所不提供的,故置為null。填好這些構造以后,調用以下函數實現驅動程序的注冊:ndisregisteriniprt(yhfddirapperhandle,yhfd
8、dihar,sizef(yhfddihar);其中yhfddirapperhandle是在此之前初始化rapper調用ndisinitializerapper所得的句柄。假如調用ndisregisteriniprt不能返回ndis_status_suess,必須在退出driverentry之前釋放已經分配的資源如yhfddirapperhandle等,故調用ndisterinaterapper(yhfddirapperhandle,null)。這樣驅動程序沒能正確注冊,亦不能正常運行。第四節網卡驅動程序對象查詢與設置假如ndis的管理實體要查詢或設置一個特定的網絡對象,它必須提供一個32位的i
9、d。id的構造如下:圖2.3.0id構造圖由上可以看到,id可分為三大類:所有ndis驅動程序都有的一般對象;特定介質的對象;特殊的與詳細實現相關的對象如多目地址表的長度。一般的和特定介質的id被記錄在indsntddk中,對于這些idddk文本指明了相關的對象能否通過iniprtqueryinfratin查詢參數和通過iniprtsetinfratin設置參數。id也可被分為操作特性如多目地址表長度參數和統計參數如播送包接收。最后id可分為必須的和可選的兩種。id的前三個字節說明id的不同類別,而最后一個字節確定這一類別內特定的信息管理對象。針對于fddi網卡,被查詢的id的第一個字節為0
10、x03。而ndis所查詢的介質相關參數為:0 x03010104id_fddi_lng_ax_list_size0 x03010108id_fddi_shrt_ax_list_size0 x03010102id_fddi_lng_urrent_addr0 x03010106id_fddi_shrt_urrent_addrtp/ip傳輸驅動程序所要查詢的fddiid為:0 x03010102id_fddi_lng_urrent_addr0 x03010103id_fddi_lng_ultiast_list0 x03010107id_fddi_shrt_ultiast_list通過以上兩階段的查詢
11、,ndis和tp/ip驅動程序就分別理解了網卡驅動程序對其的支持,從而進展相應的捆綁,以便數據傳輸時正確選擇網卡驅動程序。第五節開發環境與調試方法開發環境:fddi網卡驅動程序的開發環境為ntserver3.51,sdk,ddkfrrkstatin3.51,v+4.1,硬件平臺為586。調試平臺:主機為ntserver3.51,indbg32目的機為ntrkstatin3.51hek944調試方法:利用dbgprint把目的機上關鍵信息通過串口傳到主機進展分析,以得出ndis驅動程序的調度機制和運轉狀況;利用assert產生異常斷點,由主機對異常進展控制自定義宏,進展分級控制,以根據不同情況產
12、生不同調試信息第四章與st移植相關的問題討論在本yhfddi網卡驅動程序中,st的移植是極其關鍵的一局部,主要承當了驅動程序中硬件初始化和中斷延遲處理。但由于st是相對獨立的軟件,這樣就有一個ndisrapper與st間參數傳遞的問題。所以本章主要討論iniprt驅動程序與st的關系和移植st過程中初始化的要求、中斷處理的要求,ndisrapper與st如何傳遞參數。一iniprtfddi網卡驅動程序與st的關系。在第一章已經談及網卡驅動程序主要實現si參考模型中的物理層和a層。而對于fddi網絡的物理層又可分為介質相關子層和介質無關子層。對于我們的fddi/pi是基于x.3.19、x3.14
13、8、x3.166和x3.229而實現的。st在整個is七層模型中屬低兩層范疇。下列圖是is模型與fddi層次的對應關系,從而可知fddiiniprt驅動程序在nt網絡構造中的位置。即在indsntfddi網卡驅動程序應包含st,實現fddi拓撲環上的站管理。而在驅動程序內部st主要是在iniprt驅動程序中的中斷延遲處理上邊緣效勞中實現的,也可以說是將st嵌入中斷延遲處理程序中,實現ndis接口對st的正確調度。yh-fddi驅動程序的實現可分為硬件無關局部和硬件相關局部。移植st過程中初始化的要求.這里的初始化主要是指硬件初始化,包括存放器的初始化和數據構造的初始化,由st共用的硬件相關例程
14、庫中硬件初始化局部來完成.我們在開發過程序是調用fddi_ain(bdd_t*bdd)這個函數來調用st共用的硬件相關例程庫的.可見使用fddi_ain(bdd_t*bdd)時,需要傳遞bdd這個參量,而bdd_t這個數據構造的定義如下:它包含了各類硬件存放器的基址,所以要對其進展正確賦值就必須首先在nt的內存中映射一塊虛存與網卡內存相對應,也就實現了bdd_t構造的賦值,對fddi_ain(bdd_t*bdd)的正確調用.因此,我們在調用fddi_ain前首先將網卡上存放器內存空間映射到nt的虛存空間上,并將bdd構造正確賦值.以映射bsi_phy_base為例,詳細過程如下:phardes
15、tinatin;bdd_t*bdd;ndis_physial_addressphysialaddress;ulngbaseaddress;ndis_statusstatus;baseadress=0 x0d0000+bsi_phy_base;ndissetphysialaddresshigh(physialaddress,0);ndissetphysialaddressl(physialaddress,baseaddress);status=ndisapispae(pvid*)destinatin,iniprtadapterhandle,physialaddress,bsi_phy_len);
16、bdd-bsi_vir_base=(phar)destinatin;adapter-bdd-bsi_vir_base=bsi_vir_base;/*對adapter構造中的bdd構造賦值,以便在其它上邊緣函數中使用這些虛存基地址*/中斷處理要求.對于中斷處理,在st中主要調用spintrhandandler()來實現.我們的fddi網卡驅動程序是iniprt方式的,假設在isr中做此處理將占用大量系統資源,使系統崩潰,所以我們采用只在isr中進展中斷的排隊,而在dp中調用spintrhandler()來完成中斷處理.在中斷處理方面還有一個中斷屏蔽和中斷使能的問題,這兩方面st并不提供,故我們要
17、正確處理.詳細處理方法見第三章.ndisrapper與st間參數如何傳遞.iniprt方式的網卡驅動程序中,網卡上有中斷時,系統反映給ndisrapper,再由rapper調度中斷處理上邊緣效勞實現中斷處理,在我們的yhfddi網卡驅動程序的中斷詳細處理是st完成的所以在調用spintrhandler時應將adapter構造傳進st以便在以后應用.如在處理接收中斷時,處理的最后應調用ndisindiatefddireEive,向ndisrapper指示以接收到一個數據包,而ndisindiaterfddireeive的調用需要adapteriniprthandle作為參數,這就必須一級級從中斷
18、延遲處理函數(yhfddihandleinterrupt)中將adapter構造傳遞下來.當然,其它方面如發送,也會有類似的問題需要考慮.總之,對于st的移植,需要詳盡的在程序中做好接口,才能實現與st的數據交換.完畢語ndis標準在網絡兩層間提供了一個統一界面,ndis對網絡本身而言,是一個帶有協議功能的標準接口,對實現者而言,它應該是一個環境,這種環境不僅帶有協議功能,更重要的是帶有和軟、硬平臺無關的核心功能支持,它不會受軟、硬平臺的變化嚴重影響,無疑,它是軟件的移植和兼容的可靠保證,ndis把網絡的一局部共性抽象出來,并根據詳細的操作系統實現系統和平臺相關的根底庫以保證ndis的標準性和對開發者提供最大的功能支持,這也將加速和標準開發過程,但是,在操作系統之上提供ndis根底庫獲得標準同時也失去直接作用于操作系統帶來的靈敏性以及更強的功能支持,同時,ndis處于網絡中層和低層之間,低層網絡的快速開展和ndis對網絡局部共性的抽象必然導致ndis對實現者的滯后,例如ddk3.51提供的ndis開發環境只支持10以太網、fddi、令牌網802.5、laltalk、arnet等,而對新出現的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 秋色中考語文作文
- 移動網絡安全防護與加密技術考核試卷
- 礦產勘查樣品處理與分析質量控制考核試卷
- 淀粉在寵物食品的營養配比考核試卷
- 企業安全生產培訓教材考核試卷
- 客運站服務創新與差異化發展考核試卷
- 烘焙食品銷售策略考核試卷
- 社交電商平臺的多元化發展與創新模式探索考核試卷
- 無線廣播電視傳輸中的信號傳輸距離擴展考核試卷
- 教案新人教版高一語文必修一第1單元檢測題
- 2025至2030中國射頻芯片市場趨勢展望及需求前景研究報告
- 應急急救知識課件
- 慢性病管理與護理方法試題及答案
- 定向培養協議書模板
- 文綜中考試卷及答案解析
- 基于CRISPR-Cas9技術探索敲除RAB7A增強肺癌對吉西他濱敏感性的機制研究
- 2025年山東省東營市廣饒縣一中中考一模英語試題(原卷版+解析版)
- 形勢與政策(貴州財經大學)知到智慧樹章節答案
- 《管子·弟子職》全文翻
- 人教版巴市杭錦后旗九年級化學上冊說課課件:第二單元 我們周圍的空氣》實驗活動1 氧氣的實驗室制取與性質(17張PPT)
- 《內部控制六大業務流程及管控》
評論
0/150
提交評論