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

GetResources ルーチンは、単一ルート I/O 仮想化 (SR-IOV) インターフェイスをサポートするデバイスで仮想化を有効にするために PCI Express (PCIe) 物理機能 (PF) が必要とするリソースを返します。

構文

GET_VIRTUAL_DEVICE_RESOURCES GetVirtualDeviceResources;

void GetVirtualDeviceResources(
  [in, out] PVOID Context,
  [out]     PUINT8 CapturedBusNumbers
)
{...}

パラメーター

[in, out] Context

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

[out] CapturedBusNumbers

このルーチンが UINT8 値を返す、呼び出し元が指定した変数へのポインター。 この値は、デバイスの SR-IOV PF で使用するためにキャプチャされた PCIe バスの数を指定します。

戻り値

なし

解説

PCIe デバイスは通常、1 つの PCI バスでリソースを消費します。 PCI ドライバーは、アップストリーム ブリッジ ポートのセカンダリ バス番号レジスタと下位バス番号レジスタにバス番号を書き込むことで、PCI バスにデバイスを割り当てます。 このポートは、PCIe ルート ポートまたは PCIe スイッチ ポート内の PCI 間ブリッジです。

SR-IOV インターフェイスをサポートするデバイスでは、デバイスが接続されている PCI バスに対応できる仮想関数よりも多くの仮想関数が作成される場合があります。 このような状況では、1 つ以上の未使用の PCI バスをキャプチャするようにアップストリーム ブリッジ ポートを構成する必要があります。 これは、ポートの下位バス番号レジスタに大きな値を書き込むことで行われます。

SR-IOV インターフェイスをサポートするデバイスは、次のうち少なくとも 1 つが当てはまる場合は、PCI バスをキャプチャする必要があります。

  • デバイスには合計 8 つ以上の機能 (UDF と VFs) があり、PCI Express 3.0 仕様の代替ルーティング解釈 (ARI) オプションはサポートされていません。

  • デバイスは ARI をサポートし、合計 8 つ以上の機能を備えていますが、アップストリーム ブリッジ ポートは ARI をサポートしていません。

  • このデバイスは ARI をサポートし、256 を超える機能を備え、アップストリーム ブリッジ ポートは ARI をサポートしています。

ARI のサポートに関係なく、キャプチャされた各バスは 256 の機能をサポートできます。

すべての VFs を有効にするためにデバイスに PCIe Requestor ID (RID) が必要な場合、PCI バス ドライバーは次の処理を行います。

  1. デバイスのバス番号を PCIe セカンダリ バス番号レジスタに書き込みます。

  2. デバイスのバス番号より大きい値を PCIe 下位バス番号レジスタに書き込みます。

これら 2 つのレジスタ値の違いは、キャプチャされたバス番号の数を表します。

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

要件

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

こちらもご覧ください

PCI_VIRTUALIZATION_INTERFACE