windowsnt環境下fddi網絡卡驅動程式設計(2)

才智咖 人氣:1.06W
windowsnt環境下fddi網絡卡驅動程式設計(2)
windowsnt環境下fddi網絡卡驅動程式設計(2) 第三階段:獲取註冊庫中各種控制資訊,如使用者定義的非頁記憶體大小;第四階段:初始化註冊庫 registrymachine下system和hardware並建立currentcontrolset,為裝入相關硬體裝置驅動程式作準備;
第五階段:裝入基本核心驅動程式;
第六階段:釋放一些已經完成使命的裝入初始資料塊;
第七階段:進一步初始化註冊庫,以便有些依賴於基本核心驅動程式的上層驅動程式能順利裝入;
第八階段:服務控制器裝入應該由該服務控制器裝入的各種驅動程式。

§2.2.2 fddi網絡卡驅動程式的載入過程
在windows nt啟動的第五個階段,將載入核心驅動程式。而對於ndis網絡卡驅動程式是在ndis介面()載入後調入執行,向ndis wrapper註冊、初始化、查詢設定引數等。
windows nt啟動時,相應的實體如nt的服務控制器根據註冊庫中yhfddi驅動程式的配置註冊資訊,初始化ndis wrapper,並裝入相應的驅動程式,生成驅動程式管理塊結構,申請記憶體以儲存各種資訊,向ndis wrapper註冊驅動程式。初始化和註冊完畢後,再由服務控制器讀取註冊庫中相應的連結資訊。
在ndis wrapper和yhfddi驅動程式初始化和註冊成功後,ndis wrapper根據系統相應的註冊資訊,加入和yhfddi驅動程式所對應的fddi網絡卡,同時讀入網絡卡的註冊資訊,並進行網絡卡註冊和網絡卡初始化。
在以上過程成功後,wrapper將查詢和設定驅動程式的各種引數,瞭解驅動程式對哪些操作支援,決定對上層驅動程式的支援範圍。
第三節fddi網絡卡驅動程式的註冊
driverentry函式是windows nt ddk規定的核心驅動程式的入口點,wrapper識別到入口點後,調入驅動程式,在driverentry函式內完成兩個基本註冊任務:
呼叫ndisminitializewapper函式向ndis介面報告驅動程式將以miniport類網絡卡驅動程式註冊。ndis建立它需要記錄的驅動程式狀態資訊,同時返回ndiswrapperhandle,驅動程式儲存這個控制代碼,以利後來呼叫ndisxxxconfiguration和initialization等函式。
填寫ndisxx_miniport_characteristics屬性結構,主要記錄ndis版本號和驅動程式支援的miniportxxx函式的入口點,然後呼叫ndismregisterminiport函式實現驅動程式的`整體註冊。
以yhfddi為例所要註冊的屬性結構的內容大致如下:
ndis_miniport_characteristics yhfddichar;
(ndis_miniport_characteristics這個結構將在第三章介紹)
rndisversion=yhfddi_ndis_major_version;
rndisversion=yhfddi_ndis_minor_version;
這兩個屬性決定驅動程式是ndis的哪個版本所支援,我們所用的是ndis3.0
bleinterrupthandler=yhfddidisableinterrupt;
leinterrupthandler=yhfddienableinterrupt;
andle=yhfddiinterruptservice;
leinterrupthandler=yhfddihandleinterrupt;
以上四項屬性是中斷處理所需的上邊緣服務函式的入口點(控制代碼)。fddi網絡卡驅動程式需要有smt站管理功能,而smt是以中斷處理方式進行的,故這四項屬性在fddi網絡卡驅動程式中是很重要的。
ializehandler=yhfddiinitialize;
此項註冊的是驅動程式的初始化函式控制代碼。
yinformationhandler= yhfddiqueryinformation;
nformationhandler=yhfddisetinformation;
這兩項註冊的是引數查詢和設定函式的控制代碼。
hanler= yhfddisend;
sferdatahandler= yhfdditransferdata;
主要提供資料傳送和接收函式控制代碼。  
thandler=yhfddireset;