SRIOV_QUERY_PROBED_BARS_2 コールバック関数 (pcivirt.h)

指定された PCI Express SR-IOV 仮想関数 (VF) ベース アドレス レジスタ (BAR) から読み取られたデータに対して、値 -1 が最初に書き込まれた場合にクエリを実行します。

構文

SRIOV_QUERY_PROBED_BARS_2 SriovQueryProbedBars2;

NTSTATUS SriovQueryProbedBars2(
  [in]  PVOID Context,
  [in]  USHORT VfIndex,
  [out] PULONG BaseRegisterValues
)
{...}

パラメーター

[in] Context

ドライバー定義コンテキストへのポインター。

[in] VfIndex

クエリ対象の VF の 0 から始まるインデックス。

[out] BaseRegisterValues

PCI デバイス内の BAR の数で囲まれた変数の配列へのポインター。

戻り値

操作が成功した場合は、STATUS_SUCCESSを返します。 それ以外の場合は、適切な NTSTATUS エラー コードを返します。

注釈

このコールバック関数は、物理関数 (PF) ドライバーによって実装されます。 これは、システムが指定された仮想関数の (VF) ベース アドレス レジスタから読み取る場合に呼び出されます。

PF ドライバーは、SRIOV_DEVICE_INTERFACE_STANDARD_2のQueryProbedBars_2 メンバーを設定し、WDF_QUERY_INTERFACE_CONFIG構造体を構成し、WdfDeviceAddQueryInterface を呼び出すことによって、その実装を登録します。

このコールバックは、レジスタが値 (-1) で書き込まれた後に VF のベース アドレス レジスタの値を確認する場合に、仮想化スタック (非特権) によって呼び出されます。 このプロセスは、PCI デバイスを設定する際に従来のものであり、その結果、PCI ドライバーは、デバイスが有効になった後にデコードされるアドレス空間の量を認識できます。 特権のない VM が VF の BAR に書き込むと、特権 VM が機能しなくなる可能性があります。 したがって、このルーチンでは、BAR に書き込む必要があります。

要件

要件
サポートされている最小のクライアント Windows 10
サポートされている最小のサーバー Windows Server 2016
対象プラットフォーム Windows
ヘッダー pcivirt.h
IRQL PASSIVE_LEVEL