共用方式為


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

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

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

另請參閱

PCI_VIRTUALIZATION_INTERFACE