windows nt環境下fddi網卡驅動程序設計

學識都 人氣:2.72W
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驅動程序不透明。