NdisMEnableVirtualization 関数 (ndis.h)
ミニポート ドライバーは、ネットワーク アダプターの NIC スイッチの作成または削除中に NdisMEnableVirtualization 関数を呼び出します。 この関数を呼び出すことによって、ドライバーは、ネットワーク アダプターの物理機能 (PF) の PCI Express (PCIe) 構成空間で単一ルート I/O 仮想化 (SR-IOV) 拡張機能構造を構成します。
構文
NDIS_STATUS NdisMEnableVirtualization(
[in] NDIS_HANDLE NdisMiniportHandle,
[in] USHORT NumVFs,
[in] BOOLEAN EnableVFMigration,
[in] BOOLEAN EnableMigrationInterrupt,
[in] BOOLEAN EnableVirtualization
);
パラメーター
[in] NdisMiniportHandle
NDIS が MiniportInitializeExの MiniportAdapterHandle パラメーターに渡したネットワーク アダプター ハンドル。
[in] NumVFs
ネットワーク アダプターに対して有効にする仮想関数 (VFs) の数を含む USHORT 値。 NdisMEnableVirtualization は、SR-IOV 拡張機能構造体の NumVFs メンバーを NumVFs パラメーターの値に設定します。
[in] EnableVFMigration
このパラメーターは NDIS 用に予約されており、FALSE に設定する必要があります。
[in] EnableMigrationInterrupt
このパラメーターは NDIS 用に予約されており、FALSE に設定する必要があります。
[in] EnableVirtualization
ネットワーク アダプターの PCI 構成空間で仮想化を有効にするかどうかを指定するブール値。 EnableVirtualization が TRUE の場合、NdisMEnableVirtualization は SR-IOV コントロール メンバーの VF Enable ビットを設定します。 EnableVirtualization が FALSE の場合、NdisMEnableVirtualization はこのビット を クリアします。
戻り値
NdisMEnableVirtualization は、次のいずれかの状態値を返すことができます。
リターン コード | 説明 |
---|---|
|
仮想化操作は正常に完了しました。 |
|
アダプターまたはシステムは SR-IOV をサポートしていません。 |
|
EnableVirtualization パラメーターは FALSE に設定され、NumVFs パラメーターは 0 以外の値に設定されます。 |
|
仮想化操作に失敗しました。
メモ 仮想化が既に有効になっているときに仮想化を有効にするために呼び出された場合、 NdisMEnableVirtualization 関数は失敗します。 ドライバーが仮想化を再度有効にするには、まず ( EnableVirtualization パラメーターを FALSE に設定して関数を呼び出すことによって) 仮想化を無効にする必要があります。
|
注釈
PF ミニポート ドライバーは NdisMEnableVirtualization を呼び出して、PCI 構成空間で SR-IOV 拡張機能フィールドを構成します。 この呼び出しは、構成空間で仮想化を有効または無効にしたり、ネットワーク アダプターによって PCIe ファブリックに公開する必要がある VM の数を指定したりするために使用されます。
PF ミニポート ドライバーが OID_NIC_SWITCH_CREATE_SWITCHの OID メソッド要求を処理すると、ドライバーは NdisMEnableVirtualization を呼び出して、NIC スイッチのネットワーク アダプターで仮想化を有効にします。 ドライバーは、次のパラメーター設定で NdisMEnableVirtualization を呼び出すことによってこれを行います。
期間 | 説明 |
---|---|
NumVFs | NIC スイッチで有効にする VM の数に設定します。 |
EnableVirtualization | TRUE に設定します。 |
PF ミニポート ドライバーが OID_NIC_SWITCH_DELETE_SWITCHの OID メソッド要求を処理すると、ドライバーは NdisMEnableVirtualization を呼び出して、ネットワーク アダプターの仮想化を無効にします。 ドライバーは、次のパラメーター設定を使用して NdisMEnableVirtualization を呼び出すことによってこれを行います。
期間 | 説明 |
---|---|
NumVFs | 0 に設定します。 |
EnableVirtualization | FALSE に設定します。 |
NIC スイッチを作成する方法の詳細については、「NIC スイッチ の作成」を参照してください。
SR-IOV インターフェイスの詳細については、「 単一ルート I/O 仮想化の概要 (SR-IOV)」を参照してください。
Virtual Bus ドライバーへのインターフェイス
独立系ハードウェア ベンダー (IHV) が SR-IOV ドライバー パッケージの一部として仮想バス ドライバー (VBD) を提供する場合、ミニポート ドライバーは NdisMEnableVirtualization を呼び出す必要があります。 代わりに、ドライバーはプライベート通信チャネルを介して VBD とインターフェイスし、VBD で EnableVirtualization を呼び出すように要求する必要があります。 この関数は、基になる PCI バス ドライバーでサポートされている GUID_PCI_VIRTUALIZATION_INTERFACE インターフェイスによって提供されます。Hyper-V 親パーティションの管理オペレーティング システムで実行される VBD は、PCI バス上の物理デバイス オブジェクト (PDO) にIRP_MN_QUERY_INTERFACE要求を発行することで、GUID_PCI_VIRTUALIZATION_INTERFACEインターフェイスに対してクエリを実行できます。 この要求は、IRQL = PASSIVE_LEVELから行う必要があります。 この要求では、ドライバーは InterfaceType パラメーターを GUID_PCI_VIRTUALIZATION_INTERFACE に設定する必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | NDIS 6.30 以降でサポートされています。 |
対象プラットフォーム | ユニバーサル |
Header | ndis.h (Ndis.h を含む) |
Library | Ndis.lib |
IRQL | PASSIVE_LEVEL |
こちらもご覧ください