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 |