OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK
NDIS 發出物件識別碼 (OID) 方法要求 OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK,以通知 PCI Express (PCIe) Virtual Function (V) F 內的資料已變更。 當 PCIe 實體函式的迷你埠驅動程式 (PF) 呼叫 NdisMInvalidateConfigBlock時,NDIS 會發出此 OID。
NDIS_OID_REQUEST結構的InformationBuffer成員包含NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO結構的指標。 此結構會指定一或多個虛擬函式 (VF) 組態區塊,其資料已變更, (PF 迷你埠驅動程式) 失效 。
備註
VF 組態區塊用於 PF 與 VF 迷你埠驅動程式之間的反向通道通訊。 IHV 可以定義裝置的一或多個 VF 組態區塊。 每個 VF 組態區塊都有 IHV 定義的格式、長度和區塊識別碼。
注意 來自每個 VF 組態區塊的資料只會由 PF 和 VF 迷你埠驅動程式使用。
VF 設定資料會在下列驅動程式之間交換:
在客體作業系統中執行的 VF 驅動程式。 此作業系統會在 Hyper-V 子分割內執行。
在管理作業系統中執行的 PF 驅動程式。 此作業系統會在 Hyper-V 父分割區內執行。
若要處理無效 VF 設定資料的通知,NDIS 和迷你埠驅動程式會執行下列步驟:
在客體作業系統中,NDIS 發出 IOCTL_VPCI_INVALIDATE_BLOCK 要求的 I/O 控制要求。 完成此 IOCTL 時,NDIS 會收到 VF 設定資料已變更的通知。
在管理作業系統中,會發生下列步驟:
PF 迷你埠驅動程式會呼叫 NdisMInvalidateConfigBlock 函式來通知 NDIS VF 設定資料已變更且不再有效。 驅動程式會將 BlockMask 參數設定為 ULONGLONG 位元遮罩,指定哪些 VF 組態區塊已變更。 位元遮罩中的每個位都會對應至 VF 組態區塊。 如果位設定為 1,則對應 VF 組態區塊中的資料已變更。
NDIS 會向在管理作業系統中執行的虛擬化堆疊發出訊號,告知 VF 設定區塊資料的變更。 虛擬化堆疊會快取 BlockMask 參數資料。
注意 每次 PF 迷你埠驅動程式呼叫 NdisMInvalidateConfigBlock時,虛擬化堆疊 ORS BlockMask 參數資料在其快取中具有目前值。
虛擬化堆疊會通知虛擬 PCI (在客體作業系統中執行的 PCII) 驅動程式,說明 VF 設定資料的失效。 虛擬化堆疊會將快取的 BlockMask 參數資料傳送至 APII 驅動程式。
在客體作業系統中,會發生下列步驟:
在與IOCTL_VPCI_INVALIDATE_BLOCK要求相關聯之VPCI_INVALIDATE_BLOCK_OUTPUT結構的BlockMask成員中,將快取的BlockMask參數資料儲存在IOCTL_VPCI_INVALIDATE_BLOCK驅動程式。
IOCTL_VPCI_INVALIDATE_BLOCK驅動程式成功完成 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 設定資料變更的後續通知。
當 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。NDIS_OID_REQUEST 結構中的 BytesNeeded成員與NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO結構的大小。 |
NDIS_STATUS_FAILURE |
要求因其他原因而失敗。 |
規格需求
版本 |
NDIS 6.30 和更新版本支援。 |
標頭 |
Ntddndis.h (包含 Ndis.h) |
另請參閱
NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO