共用方式為


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 查詢,如下所示:

  1. PCI 總線驅動程式會將0xFFFFFFFF寫入 BAR。

  2. 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

另請參閱

PCI_VIRTUALIZATION_INTERFACE