NIC スイッチの静的作成
シングル ルート I/O 仮想化 (SR-IOV) をサポートするネットワーク アダプターは、NIC スイッチを作成できなければなりません。 一部のアダプターの NIC スイッチは、MiniportInitializeEx への呼び出しのコンテキスト内で静的に作成できます。
アダプターの NIC スイッチを作成できるのは、SR-IOV ネットワーク アダプターの PCI Express (PCIe) 物理関数 (PF) のミニポート ドライバーのみです。
注 Windows Server 2012 以降では、SR-IOV インターフェイスは、ネットワーク アダプターの既定の NIC スイッチを1つのみサポートします。 このスイッチは既定の NIC スイッチと呼ばれており、NDIS_DEFAULT_SWITCH_ID 識別子で参照します。
既定の NIC スイッチのパラメーターは、レジストリの標準化されたキーワード設定によって定義されます。 このようなキーワードの詳細については、 「SR-IOV の標準化された INF キーワード」をご覧ください。
PF ミニポート ドライバーは、NDIS がドライバー の MiniportInitializeEx 関数を呼び出すときに、NIC スイッチを静的に作成します。 通常、ドライバーは、ネットワーク アダプターで SR-IOV を有効にする前に、初期化シーケンスの一部として NIC スイッチを作成し、構成します。
PF ミニポート ドライバーは、NIC スイッチを静的に作成し、MiniportInitializeEx への呼び出しのコンテキストで、ネットワーク アダプターで SR-IOV を有効にする場合は、次の手順に従います。
PF ミニポート ドライバーは、SR-IOV が有効になっているかどうかを判断し、NIC スイッチ構成パラメーターを取得する SR-IOV 標準化されたキーワードを読み取る必要があります。
注: PF ミニポート ドライバーがミニ MiniportSetOptions 関数へのエントリ ポイントを登録した場合、ドライバーが以前にこれらのパラメーターを取得している場合は、レジストリから NDIS が MiniportSetOptions を呼び出します。
SR-IOV が有効になっている場合、PF ミニポート ドライバーは、レジストリからの NIC スイッチ パラメーターを使用してネットワーク アダプターを構成します。 ドライバーは、ネットワーク アダプターを構成する前に、パラメーターが有効であることを確認する必要があります。 たとえば、ミニポート ドライバーは、NIC スイッチに割り当てられている PCIe 仮想関数 (VFs) の最大数が、ネットワーク アダプターでサポートされている VF の数を超えていないことを確認する必要があります。
ミニポート ドライバーは、NDISMEnableVirtualization を呼び出して SR-IOV を有効にし、ネットワーク アダプター上の VF の数を設定します。 この関数によって、アダプターの PCI 構成領域で SR-IOV 拡張機能を構成します。 この関数が NDIS_STATUS_SUCCESS と返す場合は、SR-IOV が有効になり、VF が 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 ミニポート ドライバーの初期化」を参照してください。