次の方法で共有


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

指定された PCI Express SR-IOV Virtual Function (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_2QueryProbedBars_2 メンバーを設定し、WDF_QUERY_INTERFACE_CONFIG 構造体を構成し、WdfDeviceAddQueryInterface 呼び出すことによって、その実装を登録します。

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

必要条件

要件 価値
サポートされる最小クライアント Windows 10
サポートされる最小サーバー Windows Server 2016
ターゲット プラットフォーム ウィンドウズ
ヘッダー pcivirt.h
IRQL PASSIVE_LEVEL