GET_VIRTUAL_FUNCTION_PROBED_BARS回呼函式 (wdm.h)
GetVirtualFunctionProbedBars 例程會傳回支援單一根目錄 I/O 虛擬化 (SR) 介面之裝置的 PCI Express (PCIe) 基地址緩存器 (BA) R 的值。
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 值:
傳回碼 | Description |
---|---|
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 (在客體作業系統中執行的) 驅動程式,會使用實體裝置上 BAR 的對等大小來決定大小。 根據呼叫 GetVirtualFunctionProbedBars 例程,才能取得這項資訊。
在實體裝置啟動之後,每個 BAR 都需要記憶體或 I/O 位址空間的大小。 此時,PCI 驅動程式無法在裝置上執行 BAR 查詢,而不需要改變 BAR 的目前值。 因此, 當 GETVirtualFunctionProbedBars 例程由 URLI 驅動程式呼叫時,PCI 驅動程式會傳回在 BAR 查詢期間取得的 BAR 資訊。 PCI 驅動程式會在第一次在總線上偵測到裝置時執行此查詢。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 支援 Windows Server 2012 和更新版本的 Windows。 |
目標平台 | 桌面 |
標頭 | wdm.h (包含 Wdm.h) |
IRQL | PASSIVE_LEVEL |