共用方式為


OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK

NDIS 發出OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK的對象識別碼 (OID) 方法要求,以通知PCI Express (PCIe) 虛擬函式 (VF) 的迷你埠驅動程式,指出一或多個組態區塊中的數據已變更。 當 PCIe 實體函式的迷你埠驅動程式呼叫 NdisMInvalidateConfigBlock時,NDIS 會發出此 OID。

InformationBufferNDIS_OID_REQUEST 結構的成員包含 NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO 結構的指標。 此結構會指定 PF 迷你埠驅動程式已變更數據的一或多個虛擬函式 (VF) 組態區塊(無效)。

言論

VF 組態區塊用於 PF 與 VF 迷你埠驅動程式之間的反向通道通訊。 IHV 可以定義裝置的一或多個 VF 組態區塊。 每個 VF 組態區塊都有 IHV 定義的格式、長度和區塊識別碼。

注意 每個 VF 組態區塊中的數據只會由 PF 和 VF 迷你埠驅動程式使用。

VF 組態資料會在下列驅動程式之間交換:

  • 在客體作系統中執行的 VF 驅動程式。 此作系統會在 Hyper-V 子分割內執行。

  • 在管理作系統中執行的 PF 驅動程式。 此作系統會在 Hyper-V 父分割區內執行。

為了處理無效 VF 設定數據的通知,NDIS 和迷你埠驅動程式會執行下列步驟:

  1. 在客體作系統中,NDIS 會發出 IOCTL_VPCI_INVALIDATE_BLOCK 要求的 I/O 控制要求。 當此 IOCTL 完成時,NDIS 會收到 VF 設定數據已變更的通知。

  2. 在管理作系統中,會發生下列步驟:

    1. PF 迷你埠驅動程式會呼叫 NdisMInvalidateConfigBlock 函式,以通知 NDIS VF 組態數據已變更且不再有效。 驅動程式會將 BlockMask 參數設定為 ULONGLONG 位掩碼,指定哪些 VF 組態區塊已變更。 位掩碼中的每個位都會對應至 VF 組態區塊。 如果位設定為一個,則對應 VF 組態區塊中的數據已變更。

    2. NDIS 會針對 VF 組態區塊數據的變更,向管理作系統中執行的虛擬化堆疊發出訊號。 虛擬化堆疊會快取 BlockMask 參數數據。

      注意 每次 PF 迷你埠驅動程式呼叫 NdisMInvalidateConfigBlock時,虛擬堆棧會使用其快取中目前值 BlockMask 參數數據。

    3. 虛擬化堆疊會通知在客體作系統中執行的虛擬PCI (VPI) 驅動程式,以瞭解VF組態數據的失效。 虛擬化堆疊會將快取的 BlockMask 參數數據傳送至VPI驅動程式。

  3. 在客體作系統中,會發生下列步驟:

    1. 在與 IOCTL_VPCI_INVALIDATE_BLOCK 要求相關聯之 VPCI_INVALIDATE_BLOCK_OUTPUT 結構 BlockMask 成員中,將快取 BlockMask 參數數據儲存在快取的區塊掩碼中。

    2. 成功完成 IOCTL_VPCI_INVALIDATE_BLOCK 要求。 發生這種情況時,NDIS 會向 VF 迷你埠驅動程式發出OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK的 OID 方法要求。 NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO 會在 OID 要求中傳遞。 此結構包含快取 BlockMask 參數數據。

      NDIS 也會發出另一個 IOCTL_VPCI_INVALIDATE_BLOCK 要求,以處理 VF 設定數據變更的後續通知。

    3. 當 VF 驅動程式處理OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK要求時,它會從指定的 VF 組態區塊讀取數據。

如需單一根目錄 I/O 虛擬化 (SR-IOV) 介面內反向通道通訊的詳細資訊,請參閱 SR-IOV PF/VF Backchannel Communication

傳回狀態代碼

迷你埠驅動程式會針對 OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK 的 OID 方法要求傳回下列其中一個狀態代碼。

狀態代碼 描述

NDIS_STATUS_SUCCESS

OID 要求已順利完成。

NDIS_STATUS_NOT_SUPPORTED

迷你埠驅動程式不支援單一根目錄 I/O 虛擬化 (SR-IOV) 介面,或未啟用使用 介面。

NDIS_STATUS_INVALID_PARAMETER

NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO 結構的一或多個成員具有無效的值。

NDIS_STATUS_INVALID_LENGTH

信息緩衝區太短。 NDIS 會設定 DATA。SET_INFORMATION。BytesNeededNDIS_OID_REQUEST 結構中的成員,以 NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO 結構的大小。

NDIS_STATUS_FAILURE

要求因其他原因而失敗。

要求

版本

NDIS 6.30 和更新版本支援。

頁眉

Ntddndis.h (包括 Ndis.h)

另請參閱


IOCTL_VPCI_INVALIDATE_BLOCK

NDIS_OID_REQUEST

NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO

NdisMInvalidateConfigBlock

OID_SRIOV_READ_VF_CONFIG_SPACE

VPCI_INVALIDATE_BLOCK_OUTPUT