NIC スイッチの静的作成
単一ルート I/O 仮想化 (SR-IOV) をサポートするネットワーク アダプターは、NIC スイッチを作成できる必要があります。 一部のアダプターでは、NIC スイッチは、ミニポートInitializeExへの呼び出しのコンテキスト内で静的に作成できます。
アダプターに NIC スイッチを作成できるのは、SR-IOV アダプターの PCI Express (PCIe) 物理機能 (PF) のミニポート ドライバーだけです。
注 Windows Server 2012 以降では、SR-IOV インターフェイスはネットワーク アダプターで 1 つの NIC スイッチのみをサポートします。 このスイッチは、既定の NIC スイッチ と呼ばれ、NDIS_DEFAULT_SWITCH_ID識別子によって参照されます。
既定の NIC スイッチのパラメーターは、レジストリの標準化されたキーワード設定によって定義されます。 これらのキーワードの詳細については、「SR-IOVの標準化された INF キーワード」を参照してください。
PF ミニポート ドライバーは、NDIS がドライバーの ミニポートInitializeEx 関数を呼び出すときに、NIC スイッチを静的に作成します。 通常、ドライバーは、ネットワーク アダプターで SR-IOV を有効にする前に、初期化シーケンスの一部として NIC スイッチを作成し、構成します。
PF ミニポート ドライバーは、NIC スイッチを静的に作成し、ミニポートInitializeExへの呼び出しのコンテキストでネットワーク アダプターの SR-IOV有効にすると、次の手順に従います。
PF ミニポート ドライバーは、SR-IOV が有効になっているかどうかを判断し、NIC スイッチ構成パラメーターを取得する SR-IOV 標準化されたキーワードを読み取る必要があります。
注 PF ミニポート ドライバーが ミニポート セットOptions 関数へのエントリ ポイントを登録した場合、NDIS がミニポート セットOptions 呼び出したときに、ドライバーがレジストリからこれらのパラメーターを以前に取得している可能性があります。
SR-IOV が有効になっている場合、PF ミニポート ドライバーは、レジストリからの NIC スイッチ パラメーターを使用してネットワーク アダプターを構成します。 ドライバーは、ネットワーク アダプターを構成する前に、パラメーターが有効であることを確認する必要があります。 たとえば、ミニポート ドライバーは、NIC スイッチに割り当てられている PCIe 仮想関数 (VFs) の最大数が、ネットワーク アダプターでサポートされている VM の数を超えていないことを確認する必要があります。
ミニポート ドライバー NdisMEnableVirtualization を呼び出して、SR-IOV を有効にし、ネットワーク アダプター上の VM の数を設定します。 この関数は、アダプターの PCI 構成領域で SR-IOV 拡張機能を構成します。 この関数がNDIS_STATUS_SUCCESSを返す場合、SR-IOV が有効になり、VM が PCIe インターフェイス経由で公開されます。
注 PF ミニポート ドライバーが NIC スイッチを静的に作成する場合、NDIS が OID_NIC_SWITCH_CREATE_SWITCHのオブジェクト識別子 (OID) メソッド要求を発行するまで、スイッチを使用できません。 PF ミニポート ドライバーが NIC スイッチを静的に作成した場合は、OID 要求でスイッチ パラメーターが指定されていることを確認する必要があります。 OID 要求に関連付けられている NDIS_NIC_SWITCH_PARAMETERS 構造体に含まれるこれらのパラメーターは、スイッチの作成に使用されるドライバーのパラメーターと同じである必要があります。
OID_NIC_SWITCH_CREATE_SWITCH リクエストの処理方法の詳細については、「OID_NIC_SWITCH_CREATE_SWITCH リクエストの処理 」を参照してください。
初期化シーケンスと PF ミニポート ドライバーの要件の詳細については、「PF ミニポート ドライバー の初期化を参照してください。