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 ハードウェア機能を報告します。
ミニポート ドライバーは、Header メンバーを初期化します。 ドライバーは、Header の Type メンバーを NDIS_OBJECT_TYPE_DEFAULT に設定します。
NDIS 6.30 以降、ミニポート ドライバーは、Header の Revision メンバーを NDIS_SRIOV_CAPABILITIES _REVISION_1 に Size メンバーを NDIS_SIZEOF_SRIOV_CAPABILITIES_REVISION_1 に設定します。
ミニポート ドライバーは、SR-IOV 機能を 報告する SriovCapabilities メンバーの NDIS_SRIOV_CAPS_PF_MINIPORT フラグを設定します。
Note
VF ミニポート ドライバーは、NDIS_SRIOV_CAPS_VF_MINIPORT フラグと NDIS_SRIOV_CAPS_SRIOV_SUPPORTED フラグの両方を設定する必要があります。
VF ミニポート ドライバーは、次の手順に従って、ネットワーク アダプターの SR-IOV 機能を登録します。
ミニポート ドライバーは、NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 構造体を初期化します。
ミニポート ドライバーは、HardwareSriovCapabilities および CurrentSriovCapabilities メンバーを、以前に初期化された NDIS_SRIOV_CAPABILITIES 構造体へのポインターに設定します。
ドライバーは NdisMSetMiniportAttributes を呼び出し、MiniportAttributes パラメーターを NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 構造体へのポインターに設定します。
VF ミニポート ドライバーは、仮想マシン キュー (VMQ) 機能をアドバタイズしないでください。 ただし、ドライバーは、電源管理や受信側スケーリング (RSS) など、他の NDIS テクノロジのサポートをアドバタイズできます。
RSS に関する詳細は、「サイドスケーリングを受け取る」をご覧ください。