初始化 Miniport 驅動程式
當網路裝置變成可用時,如果驅動程式尚未載入) ,系統會載入 NDIS 迷你埠驅動程式來管理裝置 (。 每個迷你埠驅動程式都必須提供 DriverEntry 函式。 系統會在載入驅動程式之後呼叫 DriverEntry 。 DriverEntry 會向 NDIS (註冊迷你埠驅動程式的特性,包括支援的 NDIS 版本和驅動程式進入點) 。
系統會將兩個引數傳遞至 DriverEntry:
驅動程式物件的指標,由 I/O 系統所建立。
登錄路徑的指標,指定儲存驅動程式特定參數的位置。
在 DriverEntry中,迷你埠驅動程式會在 呼叫 NdisMRegisterMiniportDriver 函式中傳遞這兩個指標。 Miniport 驅動程式會將其進入點儲存在NDIS_MINIPORT_DRIVER_CHARACTERISTICS結構中,並將該結構傳遞至NdisMRegisterMiniportDriver,以匯出一組標準MiniportXxx函式。
Miniport 驅動程式的DriverEntry會傳回呼叫 NdisMRegisterMiniportDriver所傳回的值。
迷你埠驅動程式也會執行 DriverEntry中所需的任何其他驅動程式特定初始化。 驅動程式會在 MiniportInitializeEx 函式中執行配接器特定的初始化。 如需配接器初始化的詳細資訊,請參閱初始化配接 器。
DriverEntry 可以在堆疊上配置 NDIS_MINIPORT_DRIVER_CHARACTERISTICS 結構,因為 NDIS 程式庫會將相關資訊複製到自己的儲存體。 DriverEntry 應該使用 NdisZeroMemory 清除此結構的記憶體,再在其成員中設定任何驅動程式提供的值。 MajorNdisVersion和MinorNdisVersion成員必須包含驅動程式支援的 NDIS 主要和次要版本。 在特性結構的每個 Xxx處理常式 成員中, DriverEntry 必須設定驅動程式提供 MiniportXxx 函式的進入點,或成員必須是 Null。
若要讓迷你埠驅動程式設定選擇性服務,NDIS 會在迷你埠驅動程式對NdisMRegisterMiniportDriver的呼叫內容中呼叫MiniportSetOptions函式。 如需選用服務的詳細資訊,請參閱 設定選用 Miniport 驅動程式服務。
呼叫NdisMRegisterMiniportDriver的驅動程式必須準備好,NDIS 在DriverEntry傳回之後隨時呼叫其MiniportInitializeEx函式。 這類驅動程式必須有足夠的安裝和設定資訊儲存在登錄中,或是從 呼叫 NdisXxx 匯流排類型特定組態函式取得,才能設定驅動程式必須執行網路 I/O 作業的任何 NIC 特定資源。
迷你埠驅動程式最終必須呼叫 NdisMDeregisterMiniportDriver 來釋放它所配置的資源,方法是呼叫 NdisMRegisterMiniportDriver。 如果驅動程式初始化在呼叫NdisMRegisterMiniportDriver成功之後失敗,驅動程式可以從DriverEntry內呼叫NdisMDeregisterMiniportDriver。 否則,迷你埠驅動程式必須釋放它在其 MiniportDriverUnload 函式中配置的驅動程式特定資源。 換句話說,如果 NdisMRegisterMiniportDriver 未傳回NDIS_STATUS_SUCCESS, DriverEntry 必須在傳回控制權之前釋放它配置的任何資源。 如果發生這種情況,將不會載入驅動程式。 如需詳細資訊,請參閱 卸載 Miniport 驅動程式。