GET_VIRTUAL_FUNCTION_PROBED_BARS回呼函式 (wdm.h)
GetVirtualFunctionProbedBars 例程會傳回支援單一根 I/O 虛擬化 (SR-IOV) 介面之裝置的 PCI Express (PCIe) 基地址緩存器 (BAR) 值。
GetVirtualFunctionProbedBars 會傳回裝置在 PCI 總線驅動程式執行的查詢之後所報告的 BAR 值。 此查詢會決定裝置所需的記憶體或 I/O 位址空間。
語法
GET_VIRTUAL_FUNCTION_PROBED_BARS GetVirtualFunctionProbedBars;
NTSTATUS GetVirtualFunctionProbedBars(
[in, out] PVOID Context,
[out] PULONG BaseRegisterValues
)
{...}
參數
[in, out] Context
介面特定內容資訊的指標。 呼叫端會傳遞做為介面 PCI_VIRTUALIZATION_INTERFACE 結構之 Context 成員所傳遞的值。
[out] BaseRegisterValues
ULONG 值陣列的指標。 GetVirtualFunctionProbedBars 例程會傳回裝置每個 BAR 的值。
GetVirtualFunctionProbedBars 會傳回此陣列中最多 PCI_TYPE0_ADDRESSES 個值。
傳回值
GetVirtualFunctionProbedBars 例程會傳回下列其中一個 NTSTATUS 值:
傳回碼 | 描述 |
---|---|
STATUS_SUCCESS | 作業已順利完成。 |
STATUS_INVALID_DEVICE_STATE | 裝置不支援 SR-IOV 介面。 |
言論
PCI 總線驅動程式。 這會在 Hyper-V 父分割區的管理作系統中執行,會查詢裝置每個 BAR 的記憶體或 I/O 位址空間需求。 PCI 總線驅動程式會在第一次偵測總線上的配接器時執行此查詢。
透過此 BAR 查詢,PCI 總線驅動程式會決定下列各項:
裝置是否支援 BAR。
如果支援 BAR,BAR 需要多少記憶體或 I/O 位址空間。
PCI 驅動程式會執行此 BAR 查詢,如下所示:
PCI 總線驅動程式會將0xFFFFFFFF寫入 BAR。
PCI 總線驅動程式會讀取 BAR,以判斷裝置所需的記憶體或地址空間。 值為零表示裝置不支援 BAR。
GetVirtualFunctionProbedBars 例程是由 GUID_PCI_VIRTUALIZATION_INTERFACE 介面所提供。
下列注意事項適用於 GetVirtualFunctionProbedBars 例程:
SR-IOV 介面不需要PCIe VF的 BAR 符合通訊協定,以判斷 BAR 記憶體區塊或 I/O 位址空間的大小。 因此,在客體作系統中執行的虛擬PCI(DDRI) 驅動程式會使用實體裝置上BA的對等大小來判斷大小。 透過呼叫 getVirtualFunctionProbedBars 例程,即可取得這項資訊。
在實體裝置啟動之後,每個 BAR 都需要記憶體或 I/O 位址空間的大小。 此時,PCI 驅動程式無法在裝置上執行 BAR 查詢,而不需要改變 BAR 的目前值。 因此,當 GetVirtualFunctionProbedBars 例程由SPCI驅動程式呼叫時,PCI 驅動程式會傳回在 BAR 查詢期間取得的 BAR 資訊。 PCI 驅動程式會在裝置第一次在總線上偵測到時執行此查詢。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows Server 2012 和更新版本的 Windows 支援。 |
目標平臺 | 桌面 |
標頭 | wdm.h (包括 Wdm.h) |
IRQL | PASSIVE_LEVEL |