次の方法で共有


VF ミニポート ドライバーの初期化

このトピックでは、PCI Express (PCIe) 仮想関数 (VF) のミニポート ドライバーの MiniportInitializeEx 関数を記述するためのガイドラインについて説明します。 VF は、単一ルート I/O 仮想化 (SR-IOV) をサポートするネットワーク アダプターによって公開されます。

Note

 これらのガイドラインは、SR-IOV ネットワーク アダプターの VF ミニポート ドライバーにのみ適用されます。 アダプターの PCIe 物理関数 (PF) のミニポート ドライバーの初期化ガイドラインについては、「PF ミニポート ドライバーの初期化」をご覧ください。 

VF ミニポート ドライバーは、その MiniportInitializeEx 関数が呼び出されたときに、任意の NDIS ミニポート ドライバーと同じ手順に従います。 これらの手順の詳細については、「ミニポート ドライバーの初期化」を参照してください。

これらの手順に加えて、NDIS がドライバーの MiniportInitializeEx 関数を呼び出すときに、VF ミニポート ドライバーは次の追加の手順に従う必要があります。

  • VF ミニポート ドライバーは、NdisGetHypervisorInfo 関数を呼び出して、Hyper-V 子パーティションで実行されていることを確認します。 この関数は、パーティションの種類を定義する NDIS_HYPERVISOR_INFO 構造体を返します。 パーティションの種類が NdisHypervisorPartitionMsHvChild として報告された場合、ミニポート ドライバーは、アダプターの PF に接続されている Hyper-V 子パーティションで実行されています。

    Note

    パーティションの種類が NdisHypervisorPartitionMsHvParent として報告された場合、ミニポート ドライバーは、アダプターの PF に接続されている Hyper-V 親パーティションで実行されています。 この場合、ミニポート ドライバーは VF ドライバーとして初期化できません。 可能であれば、「PF ミニポート ドライバーの初期化シーケンス」の説明に従って、ドライバーを PF ドライバーとして初期化する必要があります。

  • PF ミニポート ドライバーとは異なり、VF ミニポート ドライバーは、SR-IOV 標準化キーワードと共にインストールしたり、これらのキーワードを読み取ろうとしたりしないでください。 このようなキーワードの詳細については、 「SR-IOV の標準化された INF キーワード」を参照してください。

  • VF ミニポート ドライバーは、次のように初期化された NDIS_SRIOV_CAPABILITIES 構造体を介して、下にある仮想ネットワーク アダプターの SR-IOV ハードウェア機能を報告します。

    1. ミニポート ドライバーは、Header メンバーを初期化します。 ドライバーは、HeaderType メンバーを NDIS_OBJECT_TYPE_DEFAULT に設定します。

      NDIS 6.30 以降、ミニポート ドライバーは、HeaderRevision メンバーを NDIS_SRIOV_CAPABILITIES _REVISION_1 に Size メンバーを NDIS_SIZEOF_SRIOV_CAPABILITIES_REVISION_1 に設定します。

    2. ミニポート ドライバーは、SR-IOV 機能を 報告する SriovCapabilities メンバーの NDIS_SRIOV_CAPS_PF_MINIPORT フラグを設定します。

      Note

      VF ミニポート ドライバーは、NDIS_SRIOV_CAPS_VF_MINIPORT フラグと NDIS_SRIOV_CAPS_SRIOV_SUPPORTED フラグの両方を設定する必要があります。

    VF ミニポート ドライバーは、次の手順に従って、ネットワーク アダプターの SR-IOV 機能を登録します。

    1. ミニポート ドライバーは、NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 構造体を初期化します。

      ミニポート ドライバーは、HardwareSriovCapabilities および CurrentSriovCapabilities メンバーを、以前に初期化された NDIS_SRIOV_CAPABILITIES 構造体へのポインターに設定します。

    2. ドライバーは NdisMSetMiniportAttributes を呼び出し、MiniportAttributes パラメーターを NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 構造体へのポインターに設定します。

  • VF ミニポート ドライバーは、仮想マシン キュー (VMQ) 機能をアドバタイズしないでください。 ただし、ドライバーは、電源管理や受信側スケーリング (RSS) など、他の NDIS テクノロジのサポートをアドバタイズできます。

    RSS に関する詳細は、「サイドスケーリングを受け取る」をご覧ください。