初始化虛擬迷你埠
中繼驅動程式會在成功開啟基礎迷你埠配接器之後,初始化其虛擬迷你埠,並準備好接受要求並在其虛擬迷你埠上傳送。 中繼驅動程式會從其 ProtocolBindAdapterEx函式呼叫NdisIMInitializeDeviceInstanceEx,以要求初始化一或多個虛擬迷你埠。
注意 當中繼驅動程式開啟基礎迷你埠配接器時,不需要呼叫 NdisIMInitializeDeviceInstanceEx 。 虛擬迷你埠與開啟介面卡之間不需要一對一關聯性。
將NdisIMInitializeDeviceInstanceEx的DriverInstance參數設定為要初始化之虛擬迷你埠的裝置名稱。 中繼驅動程式會從 UpperBindings 登錄機碼取得裝置名稱。
對於跨單一實體 NIC 分層多個虛擬迷你埠的 n對一 MUX 中繼驅動程式,每個虛擬迷你埠都必須有一個裝置名稱。 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 迷你埠驅動程式。
中繼驅動程式應該確認其維護的狀態資訊已正確初始化。 例如,如果驅動程式需要傳送相關資源--例如,MiniportSendNetBufferLists將傳輸至下一層的網路資料的新NET_BUFFER_LIST結構結構--此時可以配置NET_BUFFER_LIST結構集區。