中繼驅動程式的初始必要進入點必須明確命名 DriverEntry,以便載入器能夠正確識別它。 本節所述的所有其他導出驅動程式函式,如 MiniportXxx 和 ProtocolXxx,可能會有任何廠商指定的名稱,因為它們會以位址的形式傳遞至 NDIS。
在中繼驅動程式中,DriverEntry 的最低要求是:
呼叫 NdisMRegisterMiniportDriver,並將傳回的句柄儲存在 NdisMiniportDriverHandle 參數中。
如果驅動程式後續系結至基礎 NDIS 驅動程式,請呼叫 NdisRegisterProtocolDriver 來註冊驅動程式的 ProtocolXxx 函式。
呼叫 NdisIMAssociateMiniport 以通知 NDIS 驅動程式的迷你埠上層與通訊協定底層的關聯。
中級驅動程式必須註冊 MiniportDriverUnload 卸除管理器。 當系統卸除中繼驅動程式時,會呼叫這個卸載處理程式。 如果 DriverEntry 失敗,則不會呼叫此卸載處理程式;相反地,只會卸除驅動程式。 如需卸載處理程式的詳細資訊,請參閱 卸載中繼驅動程式。
卸除處理程式應該呼叫 NdisDeregisterProtocolDriver,以取消註冊中繼驅動程式的通訊協定部分。 卸除處理程式也應該執行任何必要的清除作業,例如重新配置驅動程式通訊協定部分所使用的資源。
請注意,卸除處理程式與 MiniportHaltEx 函式不同:卸除處理程式具有更全域的範圍,而 MiniportHaltEx 函式的範圍僅限於特定的迷你埠配接器。 中繼驅動程式應該清除狀態資訊,並在系結至該驅動程式的每個基礎迷你埠驅動程式停止時重新配置資源。 如需處理虛擬迷你埠停止作業的相關信息,請參閱 停止虛擬迷你埠。
ProtocolUninstall 是選擇性的卸除處理程式。 在將 ProtocolCharacteristics 結構傳遞至 NdisRegisterProtocolDriver時,註冊此函式的進入點。 NDIS 會呼叫 ProtocolUninstall,以回應使用者卸載中繼驅動程式的要求。 NDIS 會針對每個系結配接器呼叫 ProtocolUnbindAdapterEx 一次,然後 NDIS 會呼叫 ProtocolUninstall。 這個處理程式會在系統實際卸除驅動程式之前呼叫。 此時機可讓您釋放任何裝置物件或其他資源,否則系統可能無法呼叫向 NdisMRegisterMiniportDriver 註冊的卸除處理程式,也無法卸除驅動程式。
DriverEntry 可以初始化旋轉鎖,以保護中繼驅動程式所配置的任何全域共用資源,例如狀態變數、結構和記憶體區域。 驅動程式會使用這些資源來追蹤連線,以及追蹤進行中的傳送或驅動程式配置的佇列。
如果 DriverEntry 無法配置驅動程式執行網路 I/O 作業所需的任何資源,它應該釋放任何先前配置的資源,並傳回適當的錯誤狀態。
下列主題會進一步說明如何註冊中繼驅動程式: