SRIOV_GET_VENDOR_AND_DEVICE_IDS コールバック関数 (pcivirt.h)
VF のより汎用的なプラグ アンド プレイ ID を生成するために使用する PCI Express SR-IOV 仮想関数 (VF) のベンダー ID とデバイス ID を提供します。 これらの ID は、VF の構成空間から直接読み取ることはできません。
構文
SRIOV_GET_VENDOR_AND_DEVICE_IDS SriovGetVendorAndDeviceIds;
void SriovGetVendorAndDeviceIds(
[in] PVOID Context,
[in] USHORT VfIndex,
[out] PUSHORT VendorId,
[out] PUSHORT DeviceId
)
{...}
パラメーター
[in] Context
ドライバー定義コンテキストへのポインター。
[in] VfIndex
この書き込み操作が適用される VF の 0 から始まるインデックス。
[out] VendorId
VF のベンダー ID が入力された USHORT 変数へのポインター。
[out] DeviceId
VF のデバイス ID が入力された USHORT 変数へのポインター。
戻り値
なし
解説
このコールバック関数は、物理関数 (PF) ドライバーによって実装されます。 システムが指定された VF のベンダー識別子とデバイス識別子を取得する場合に呼び出されます。
PCI Express SR-IOV 仕様では、すべての VM に同じベンダー ID とデバイス ID が必要です。 これは、準拠しているハードウェアの要件です。 ただし、機能が異なる VM をプロビジョニングすることは可能であり、多くの場合、異なるハードウェアに異なるドライバーを読み込むのに役立ちます。 そのため、WINDOWS を使用すると、PF ドライバーはデバイス ID とベンダー ID を個別に (構成空間インターフェイスを介して異なるクラス コードを使用して) 提供できます。これにより、各 VF は、その使用に最も適したプラグ アンド プレイ ID と共に表示されます。
PF ドライバーは、SRIOV_DEVICE_INTERFACE_STANDARDの GetVendorAndDevice メンバーを設定し、WDF_QUERY_INTERFACE_CONFIG構造体を構成し、WdfDeviceAddQueryInterface を呼び出すことによって、その実装を登録します。
このコールバック関数の実装例を次に示します。
Virtualization_GetVendorAndDevice (
_In_ PVOID Context,
_In_ USHORT VfIndex,
_Out_ PUSHORT VendorId,
_Out_ PUSHORT DeviceId
)
{
PDEVICE_CONTEXT deviceContext;
UNREFERENCED_PARAMETER(VfIndex);
PAGED_CODE();
deviceContext = (PDEVICE_CONTEXT)Context;
*VendorId = deviceContext->VendorId;
*DeviceId = deviceContext->DeviceId;
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 10 |
サポートされている最小のサーバー | Windows Server 2016 |
対象プラットフォーム | Windows |
ヘッダー | pcivirt.h |
IRQL | PASSIVE_LEVEL |