次の方法で共有


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