- 相關推薦
windows nt環境下fddi網卡驅動程序設計
總體結構介紹
第一節windowsnt網絡結構
§1.1.1windowsnt網絡體系結構
windowsnt的網絡體系結構是基于國際標準化(iso)制定的標準模型──開放式系統互連(opensysteminterconnection:osi)參考模型分層建立的,這種方式有利于隨時擴展其它功能和服務。
windowsnt網絡模型開始于mac子層,網卡驅動程序就駐留在其中。它通過相關的網卡把windowsnt與網絡連接起來,圖中的多個網卡表明在一臺運行windowsnt的計算機上能使用多種網卡。
這一網絡體系結構包括兩個重要接口──ndis接口與傳輸驅動
程序接口(tdi)。這兩個接口把兩個層隔離開來,辦法是相鄰的部件只允許按單一的標準來寫,不允許多重標準。例如一個網卡驅動程序(在ndis接口的下面)就不需要特地按每個傳輸協議來寫它的代碼塊,恰恰相反,該驅動程序是寫給ndis接口的,它通過符合ndis的相應傳輸協議來請求服務。這些接口包含在windowsnt的網絡體系結構中,以容納可移植、可互換的模塊。
在兩個接口之間,是傳輸協議。它在網絡中起著組織者的作用。一個傳輸協議規定了數據以何種方式呈遞給下一個接收層,以及如何對數據相應地進行打包。它通過ndis把數據傳給網卡驅動程序,并通過tdi把數據傳給轉發程序(redirector)
tdi之上是轉發程序,它把本地的網絡資源申請轉送給網絡。
為了能和其他廠商的網絡互連,windowsnt允許有多個轉發程序。對于每一個轉發程序windowsnt計算機必須也有一個相應的供應者(provider)(由網絡廠商提供)。多供應者路由選擇程序決定適當的供應者,然后借助于供應者,對應用請求到相應的轉發程序做出選擇。
§1.1.2windowsnt網絡驅動程序
windowsnt支持兩種類型的網絡驅動程序
傳輸驅動程序
實現數據鏈路層中的邏輯鏈路控制子層協議和傳輸層協議。向下與ndis接口,向上與tdi接口。
網卡驅動程序
實現對物理層的管理和數據鏈路層中介質訪問控制子層協議,通過ndis向下管理物理網卡,向上與傳輸驅動程序通信。
§1.1.3windowsnt網卡驅動程序
windowsnt環境下的網卡驅動程序也分為兩種:
miniport網卡驅動程序:miniport驅動程序只須實現與網絡硬件相關的操作(包括發送和接收)。而所有底層網卡驅動程序的通用操作(如同步),一般由ndis接口程序來實現。
full網卡驅動程序:full網卡驅動程序必須實現所有硬件相關和同步、排隊等操作。例如full網卡驅動程序為了響應數據接收,需要保持本身的捆綁信息,而miniport就可以由ndis接口庫來實現。
在windowsnt的早期版本中,full網卡驅動程序要求開發者實現許多底層操作,來處理多處理器的核心問題以及處理器、線程的同步,這樣不同的開發者在大量重復著許多相同的工作。
而miniport網卡驅動程序允許開發者僅僅寫一些與網絡硬件相關的代碼即可,而那些通用的函數由ndis接口庫來實現,這樣開發出來的驅動程序減少了不必要的工作。
第二節miniport驅動程序的結構
ndis接口規范了網卡驅動程序的實現,同時也對tdi驅動程序的實現提出了一定的要求,在nt中,ndis約束下的網卡驅動程序、tdi驅動程序和系統的關系如下圖所示:
圖2.0ndis約束下的網卡驅動程序、tdi驅動程序和系統的關系
miniport驅動程序包括驅動程序對象、驅動程序源代碼和ndis接口庫代碼。windowsntddk提供ndis.h作為miniport驅動程序的主要頭文件,定義了miniport驅動程序的入口點、ndis接口庫函數和通用數據結構。
上邊緣函數的作用是網卡驅動與ndis接口庫進行通信,而下邊緣函數是tdi協議驅動程序與ndis通信的手段。
§1.2.1miniport網卡對象
ndis用一個叫做邏輯網卡的軟件對象來描述系統中的每塊網卡,而邏輯網卡與windowsnt設備對象的通信由i/o子系統來管理,描述網卡的設備對象包括相關的網絡信息如名字、網絡地址和網卡內存基地址等,它還包含與硬件相關的驅動程序狀態數據(捆綁數目,捆綁句柄,包過濾數據庫等)。ndis分配一個句柄到miniportinitialize這個上邊緣函數的一個結構中,然后miniport網卡驅動程序將在以后提供這個句柄來給ndis調用,這個結構一直被ndis保持,并且對miniport驅動程序不透明。
當miniport網卡驅動程序初始化一塊網卡時,它創立自己的內部數據結構來描述網卡,記錄需要它管理的與設備相關的狀態信息。當miniport網卡驅動程序調用ndismsetatttibutes或ndismsetattributesex兩ndis庫函數時,它傳遞一個句柄給這數據結構。這樣,當調用miniport驅動程序入口點時,它就傳遞這個句柄來驗證驅動程序所對應的網卡的正確性。這個數據結構為miniport網卡驅動程序所擁有并維護。
§1.2.2網絡對象標識符
miniportnic驅動程序還需要維護一組對象,這些對象是系統定義的對象標識符(objectidetifier:oid)來標識,以描述驅動程序的性能和當前狀態信息。為查詢這些信息,上層驅動程序調用ndisrequest向ndis接口庫指示oid。oid表示了調用所需的信息類型,如miniport驅動程序所支持的lookahead緩沖區大小等。ndis接到上層驅動程序的查詢請求,將oid傳遞給上邊緣函數miniportqueryinformation實現對oid的查詢,如果上層驅動程序請求改變狀態信息則調用miniportsetinformation實現對oid的設置。
§1.2.3miniport網卡驅動程序代碼
典型的miniportnic驅動程序必須有一些函數來通過ndis接口實現上層驅動程序與硬件的通信。這些函數稱為上邊緣服務函數。
這些上邊緣服務函數由驅動程序的開發者根據驅動程序面向的特定低層網絡類型和硬件以及相應環境,可以有選擇地實現,但必須保證驅動程序最基本的功能,這些基本功能包括初始化、發送、中斷處理、重置、參數查詢與設置和報文接收。
miniportinitialize:操作系統根據系統配置信息,檢測出網卡已安裝時,由ndis接口在初始化時調用,主要完成低層網絡類型確定,對應于物理網卡的邏輯網卡初始化,中斷信息注冊,網卡與主機通訊方式的確認。i/o端口的申請與注冊,內存映像,mib的初始化,物理網卡的驗證與初始化等。
miniportreconfigure:支持網卡參數動態變化,和miniportinitilize一樣由ndis接口以初
【windows nt環境下fddi網卡驅動程序設計】相關文章:
Windows05-28
電子商務環境下客戶價值探討06-01
新媒體環境下假新聞傳播研究論文04-27
新媒體環境下的體驗廣告形態文學論文04-29
淺探網絡環境下搜索引擎的使用05-13
淺談電子商務環境下國際貿易的發展創新06-02
局域網數據庫環境下數據采集及處理05-08
任務驅動教學法的特點和難點探微11-21
C語言程序設計 (一)05-11