共用方式為


停止 PF Miniport 驅動程式

本主題討論在支援單一根目錄 I/O 虛擬化 (SR-IOV) 之介面卡上停止 PCI Express (PCIe) 實體函式 (PF) 時,所牽涉到的步驟。 下圖顯示這些步驟。

此圖顯示停止 PF Miniport 驅動程式的程式,說明過度處理驅動程式、NDIS 和 PF 迷你埠驅動程式之間的要求和函式流程。

本主題包含下列資訊:

呼叫 MiniportHaltEx 之前,由 NDIS 和過度置放驅動程式執行的動作

在 NDIS 呼叫 PF 迷你埠驅動程式的 MiniportHaltEx 函 式之前,它會先執行下列動作:

  • NDIS 會將先前系結至基礎 PF 迷你埠驅動程式的所有通訊協定驅動程式解除系結。 NDIS 會藉由呼叫通訊協定驅動程式的 ProtocolUnbindAdapterEx 函 式來執行這項作業。

  • NDIS 會中斷連結先前系結至基礎 PF 迷你埠驅動程式的所有篩選驅動程式。 NDIS 會藉由呼叫篩選驅動程式的 FilterDetach 函式來執行這項作業。

當過度的通訊協定或篩選驅動程式未系結或從 PF 迷你埠驅動程式中斷連結時,必須遵循下列步驟:

  1. 驅動程式必須發出物件識別碼 (OID) 設定 OID_RECEIVE_FILTER_CLEAR_FILTER 的要求,以清除先前設定的任何接收篩選。 驅動程式會在網路介面卡上 NIC 交換器的預設虛擬埠 (VPort) 或任何非預設 VPorts 上設定這些篩選。 驅動程式會將 OID_RECEIVE_FILTER_SET_FILTER 的 OID 方法要求發出至 PF 迷你埠驅動程式來設定這些篩選。

  2. 驅動程式必須發出 OID_NIC_SWITCH_DELETE_VPORT 的 OID 集合要求,以刪除先前在 NIC 交換器上建立的任何非預設 VPorts。 驅動程式會發出 OID_NIC_SWITCH_CREATE_VPORT PF 迷你埠驅動程式的 OID 方法要求,來設定這些 VPort。

  3. 驅動程式必須發出 OID_NIC_SWITCH_FREE_VF 的 OID 集合要求,以釋放任何 PCIe 虛擬函式 (VF 的資源,) 先前在 NIC 交換器上配置的資源。 驅動程式會發出 OID 方法要求 OID_NIC_SWITCH_ALLOCATE_VF給 PF 迷你埠驅動程式,以配置 VF 的資源。

    如需詳細資訊,請參閱 釋放虛擬函式的資源

    注意 釋放 VF 的資源時,NDIS 會呼叫 VF 迷你埠驅動程式的 MiniportHaltEx 函式。 如需詳細資訊,請參閱 停止 VF Miniport 驅動程式

從 NIC 交換器中刪除所有接收篩選、非預設 VPorts 和 VFs 之後,NDIS 會遵循下列步驟:

  • NDIS 會發出 OID 集合 要求 OID_NIC_SWITCH_DELETE_SWITCH給 PF 迷你埠驅動程式,以刪除所有 NIC 交換器。 如需如何刪除 NIC 參數的詳細資訊,請參閱 刪除 NIC 交換器

    注意 從 Windows Server 2012 開始,SR-IOV 介面僅支援網路介面卡上的預設 NIC 交換器。

  • 成功刪除所有 NIC 交換器之後,NDIS 會呼叫 PF 迷你埠驅動程式的 MiniportHaltEx 函 式。

呼叫 MiniportHaltEx 時,PF Miniport 驅動程式所執行的動作

當 NDIS 呼叫 MiniportHaltEx時,PF 迷你埠驅動程式必須遵循下列步驟:

  1. 如果 PF 迷你埠驅動程式支援靜態建立 NIC 參數,而且已刪除所有 NIC 參數,則驅動程式必須呼叫 NdisMEnableVirtualization ,並將 EnableVirtualization 參數設為 FALSE,並將 NumVFs 參數設定為零,以停用介面卡上的虛擬化。

    NdisMEnableVirtualization 會在網路介面卡 PF 的 PCIe 設定空間中,清除 SR-IOV 擴充功能結構中的 NumVFs 成員和 VF Enable 位。

    注意如果 PF 迷你埠驅動程式支援動態建立和設定 NIC 參數,當驅動程式處理OID_NIC_SWITCH_DELETE_SWITCH的 OID 集合要求時,它必須呼叫NdisMEnableVirtualization。 在 呼叫 MiniportHaltEx 之前,會發出此 OID 要求。

  2. PF 迷你埠驅動程式會執行與迷你埠停止作業相關聯的其他工作。 如需詳細資訊,請參閱 停止迷你埠配接器