次の方法で共有


OID_NIC_SWITCH_ALLOCATE_VF 要求の処理

ネットワーク アダプター上の PCI Express (PCIe) 物理機能 (PF) のミニポート ドライバーが、OID_NIC_SWITCH_ALLOCATE_VF のオブジェクト識別子 (OID) メソッド要求を処理する場合、次の処理が行われます:

  • PF ミニポート ドライバーは、ネットワーク アダプター上の PCIe 仮想関数 (VF) のソフトウェア リソースを割り当てます。 これらのリソースは、NDIS_NIC_SWITCH_VF_PARAMETERS 構造で指定されたパラメーターに基づいて構成されます。

  • PF ミニポート ドライバーは、ネットワーク アダプターの NIC スイッチに VF を割り当てます。 NIC スイッチは、NDIS_NIC_SWITCH_VF_PARAMETERS 構造体のSwitchId メンバーによって識別されます。

    NIC スイッチの詳細については、「NIC スイッチ」を参照してください。

  • PF ミニポート ドライバーは、VF 識別子で VFId メンバーを更新します。 この識別子は 0 から始まるインデックスであり、PF ミニポート ドライバーによって NIC スイッチに割り当てられているすべての VM で一意である必要があります。

    上位ドライバーは、OID_NIC_SWITCH_FREE_VF またはOID_NIC_SWITCH_VF_PARAMETERS の連続する OID 要求で VFId メンバーの値を使用します。

  • PF ミニポート ドライバーは、VF の PCIe リクエスタ識別子 (RID) を使用して RequestorId メンバーを更新します。

    ミニポート ドライバーは、NdisMGetVirtualFunctionLocation を呼び出して、VF に対応する RID 情報を取得します。 次に、ドライバーは、NdisMGetVirtualFunctionLocation の呼び出しによって返される情報に基づく NDIS_MAKE_RID マクロを使用して RID を作成します。

    RID は、仮想化スタックによって DMA を再マップし、PF と VF の間で割り込みを行うために使用されます。 RID を使用すると、ハードウェア入出力メモリ管理ユニット (IOMMU) がゲスト物理アドレスをホスト物理アドレスに変換することもできます。

  • PF ミニポート ドライバーは、VF を初期化して公開します。 これにより、VF は仮想化スタックで使用できるようになります。

PF ミニポート ドライバーが必要なソフトウェア リソースを正常に割り当て、VF を初期化できる場合、ドライバーは、NDIS_STATUS_SUCCESSで OID 要求を完了します。 PF ミニポート ドライバーは、割り当てられた各 VF の VF ID を保持する必要があります。 NDIS と上にあるドライバーは、VF のリセットや解放など、さまざまなアクション用の PF ミニポート ドライバーに対する連続する OID 要求で VF 識別子を使用します。

VF のリソースが割り当てられている場合、仮想ポート (VPort) が VF に接続されていないため、VF は接続されていない状態になります。 基になるドライバーは、VPort を作成して VF にアタッチする OID_NIC_SWITCH_CREATE_VPORT の OID 要求を発行できます。 詳細については、「仮想ポートの作成」を参照してください。