NdisMEnableVirtualization 関数 (ndis.h)

ミニポート ドライバーは、ネットワーク アダプターの NIC スイッチの作成または削除中に NdisMEnableVirtualization 関数を呼び出します。 この関数を呼び出すことによって、ドライバーは、ネットワーク アダプターの物理機能 (PF) の PCI Express (PCIe) 構成空間で単一ルート I/O 仮想化 (SR-IOV) 拡張機能構造を構成します。

NdisMEnableVirtualization は、ネットワーク アダプターの PF のミニポート ドライバーによってのみ呼び出す必要があります。
 

構文

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 パラメーターの値に設定します。

メモEnableVirtualization パラメーターが FALSE の場合、NumVFs を 0 に設定する必要があります。
 

[in] EnableVFMigration

このパラメーターは NDIS 用に予約されており、FALSE に設定する必要があります。

[in] EnableMigrationInterrupt

このパラメーターは NDIS 用に予約されており、FALSE に設定する必要があります。

[in] EnableVirtualization

ネットワーク アダプターの PCI 構成空間で仮想化を有効にするかどうかを指定するブール値。 EnableVirtualization が TRUE の場合、NdisMEnableVirtualization は SR-IOV コントロール メンバーの VF Enable ビットを設定します。 EnableVirtualization が FALSE の場合、NdisMEnableVirtualization はこのビット クリアします。

戻り値

NdisMEnableVirtualization は、次のいずれかの状態値を返すことができます。

リターン コード 説明
NDIS_STATUS_SUCCESS
仮想化操作は正常に完了しました。
NDIS_STATUS_NOT_SUPPORTED
アダプターまたはシステムは SR-IOV をサポートしていません。
NDIS_STATUS_INVALID_PARAMETER
EnableVirtualization パラメーターは FALSE に設定され、NumVFs パラメーターは 0 以外の値に設定されます。
NDIS_STATUS_FAILURE
仮想化操作に失敗しました。
メモ 仮想化が既に有効になっているときに仮想化を有効にするために呼び出された場合、 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

こちらもご覧ください

EnableVirtualization

GUID_PCI_VIRTUALIZATION_INTERFACE

OID_NIC_SWITCH_CREATE_SWITCH

OID_NIC_SWITCH_DELETE_SWITCH