GET_VIRTUAL_DEVICE_LOCATION コールバック関数 (wdm.h)

GetLocation ルーチンは、PCI バス上の PCI Express (PCIe) 仮想関数 (VF) のデバイスの場所を返します。 単一ルート I/O 仮想化 (SR-IOV) インターフェイスをサポートするデバイスは、PCI バス上で 1 つ以上の VFs を公開できます。

構文

GET_VIRTUAL_DEVICE_LOCATION GetVirtualDeviceLocation;

NTSTATUS GetVirtualDeviceLocation(
  [in, out] PVOID Context,
  [in]      USHORT VirtualFunction,
  [out]     PUINT16 SegmentNumber,
  [out]     PUINT8 BusNumber,
  [out]     PUINT8 FunctionNumber
)
{...}

パラメーター

[in, out] Context

インターフェイス固有のコンテキスト情報へのポインター。 呼び出し元は、インターフェイスのPCI_VIRTUALIZATION_INTERFACE構造体の Context メンバーとして渡される値を渡します。

[in] VirtualFunction

デバイスの場所が返されるデバイスの VF を指定する 0 から始まる値

[out] SegmentNumber

このルーチンが現在の PCI セグメント番号の UINT16 値を返す、呼び出し元が指定した変数へのポインター。 この値は、デバイスが接続されている PCI バスのグループを指定します。

[out] BusNumber

このルーチンが UINT8 値を返す、呼び出し元が指定した変数へのポインター。 この値は、デバイスが接続されている現在の PCI バス番号を指定します。

[out] FunctionNumber

このルーチンが UINT8 値を返す、呼び出し元が指定した変数へのポインター。 この値には、PCI バス上の指定された VF の関数番号が含まれます。

戻り値

GetLocation ルーチンは、次のいずれかの NTSTATUS 値を返します。

リターン コード 説明
STATUS_SUCCESS 操作は正常に完了しました。
STATUS_INVALID_PARAMETER VirtualFunction パラメーターは、デバイスの SR-IOV 拡張機能構造の TotalVFs メンバーの値よりも大きくなります。

注釈

GetLocation ルーチンは、PCIe 階層内の VF の現在のデバイスの場所を返します。 この情報は、I/O メモリ管理ユニット (IOMMU) を使用してデバイスとの間でトラフィックをルーティングする仮想化システムに必要です。

GetLocation ルーチンの呼び出しから正常に戻ると、FunctionNumber パラメーターには、PCI バス上の指定された VF の関数番号を表す値が含まれます。 この値は、PCI Express 3.0 仕様の代替ルーティング解釈 (ARI) オプションに基づいています。 ARI は、PCIe バスを 8 ビットの関数空間を持つ単一のデバイスとして扱います。これにより、バス上で 256 の機能が可能になります。

GetLocation ルーチンは、GUID_PCI_VIRTUALIZATION_INTERFACE インターフェイスによって提供されます。

VF が配置されている PCI バス番号は変更される可能性があります。 ドライバーは、レジストリなどの不揮発性ストレージに VF のデバイスの場所を格納しないことをお勧めします。

要件

要件
サポートされている最小のクライアント Windows Server 2012 以降のバージョンの Windows Server でサポートされます。
対象プラットフォーム デスクトップ
Header wdm.h (Wdm.h を含む)
IRQL PASSIVE_LEVEL

こちらもご覧ください

PCI_VIRTUALIZATION_INTERFACE