中繼驅動程式會在成功開啟底層迷你埠配接器並準備好接受要求及傳輸至其虛擬迷你埠後,初始化其虛擬迷你埠。 中介驅動程式會從 ProtocolBindAdapterEx 函式中一或多次呼叫 NdisIMInitializeDeviceInstanceEx,以請求初始化一個或多個虛擬迷你埠。
注意 開啟基礎迷你埠配接器時,不需要中繼驅動程式呼叫 NdisIMInitializeDeviceInstanceEx。 虛擬迷你埠和開啟的網路配接器之間不必存在一對一的關係。
將 NdisIMInitializeDeviceInstanceEx 的 DriverInstance 參數設定為要初始化之虛擬迷你埠的裝置名稱。 中繼驅動程式會從 UpperBindings 登錄機碼取得裝置名稱。
對於一個 n-對一的 MUX 中繼驅動程式,其在單一實體 NIC 上覆蓋多個虛擬迷你埠,每個虛擬迷你埠必須有一個裝置名稱。 MUX 中繼驅動程式需要一個 notify 物件,以維護虛擬迷你埠裝置名稱的清單。 清單的建議位置是 UpperBindings 登錄機碼。 在此情況下,UpperBindings 登錄機碼是包含裝置名稱清單的 MULTI_SZ 項目。 MUX 中繼驅動程式會針對裝置名稱清單中指定的每個裝置名稱,呼叫 NdisIMInitializeDeviceInstanceEx 一次。
呼叫 NdisIMInitializeDeviceInstanceEx 會導致呼叫中繼驅動程式的 MiniportInitializeEx 函式來執行指定虛擬迷你埠的初始化,前提是 NDIS 會收到啟動裝置的IRP_MN_START_DEVICE。 如果 NDIS 未收到這類 IRP,NDIS 將不會呼叫中繼驅動程式的 MiniportInitializeEx 函式。 MiniportInitializeEx 的呼叫稍後可能會發生,因此不一定是在呼叫 NdisIMInitializeDeviceInstanceEx的內容中。 如果 NDIS 從未針對呼叫 NdisIMInitializeDeviceInstanceEx中所參考的虛擬迷你埠呼叫 MiniportInitializeEx,且中繼驅動程式不再需要虛擬迷你埠,則中繼驅動程式應該呼叫 NdisIMCancelInitializeDeviceInstance 來取消虛擬迷你埠的初始化。 例如,假設中繼驅動程式會建立虛擬迷你埠,以回應成功系結至基礎迷你埠。 如果在 NDIS 呼叫 MiniportInitializeEx之前移除該系結,中繼驅動程式應該呼叫 NdisIMCancelInitializeDeviceInstance 來取消迷你埠的初始化。
MiniportInitializeEx 必須配置和初始化虛擬迷你埠特定內容區域。 如需指定內容區域的詳細資訊,請參閱 初始化虛擬迷你連接埠。
中介驅動程式必須以反序列化驅動程式的形式運作。 如需還原串行化驅動程式的詳細資訊,請參閱 還原串行化的 NDIS 迷你埠驅動程式。
中繼驅動程式應該確認所維護的狀態資訊已正確初始化。 例如,如果驅動程式需要傳送相關資源,例如新的 NET_BUFFER_LIST 結構以傳輸要由 MiniportSendNetBufferLists 傳送至下一個較低層的網路數據,此時可以配置 NET_BUFFER_LIST 結構集區。