Función NdisMEnableVirtualization (ndis.h)

Un controlador de minipuerto llama a la función NdisMEnableVirtualization durante la creación o eliminación de un conmutador NIC en el adaptador de red. Al llamar a esta función, el controlador configura la estructura de funcionalidad extendida de virtualización de E/S raíz única (SR-IOV) en el espacio de configuración de PCI Express (PCIe) para la función física (PF) del adaptador de red.

NotaNdisMEnableVirtualization solo debe llamarse mediante el controlador de minipuerto para el PF del adaptador de red.
 

Sintaxis

NDIS_STATUS NdisMEnableVirtualization(
  [in] NDIS_HANDLE NdisMiniportHandle,
  [in] USHORT      NumVFs,
  [in] BOOLEAN     EnableVFMigration,
  [in] BOOLEAN     EnableMigrationInterrupt,
  [in] BOOLEAN     EnableVirtualization
);

Parámetros

[in] NdisMiniportHandle

Identificador del adaptador de red que NDIS pasó al parámetro MiniportAdapterHandle de MiniportInitializeEx.

[in] NumVFs

Valor de USHORT que contiene el número de funciones virtuales (VFs) que se van a habilitar para el adaptador de red. NdisMEnableVirtualization establece el miembro NumVFs de la estructura de funcionalidad extendida SR-IOV en el valor del parámetro NumVFs .

Nota Si el parámetro EnableVirtualization es FALSE, NumVFs debe establecerse en cero.
 

[in] EnableVFMigration

Este parámetro está reservado para NDIS y debe establecerse en FALSE.

[in] EnableMigrationInterrupt

Este parámetro está reservado para NDIS y debe establecerse en FALSE.

[in] EnableVirtualization

Valor BOOLEAN que especifica si la virtualización debe habilitarse en el espacio de configuración PCI del adaptador de red. Si EnableVirtualization es TRUE, NdisMEnableVirtualization establece el bit Enable de VF del miembro SR-IOV Control. NdisMEnableVirtualization borra este bit si EnableVirtualization es FALSE.

Valor devuelto

NdisMEnableVirtualization puede devolver uno de los siguientes valores de estado.

Código devuelto Descripción
NDIS_STATUS_SUCCESS
La operación de virtualización se completó correctamente.
NDIS_STATUS_NOT_SUPPORTED
El adaptador o sistema no admite SR-IOV.
NDIS_STATUS_INVALID_PARAMETER
El parámetro EnableVirtualization se establece en FALSE y el parámetro NumVFs se establece en un valor distinto de cero.
NDIS_STATUS_FAILURE
Error en la operación de virtualización.
Nota Se produce un error en la función de NdisMEnableVirtualization si se llama a para habilitar la virtualización cuando la virtualización ya está habilitada. El controlador primero debe deshabilitar la virtualización (mediante una llamada a la función con el parámetro EnableVirtualization establecido en FALSE) antes de que el controlador pueda volver a habilitar la virtualización.
 

Comentarios

Los controladores de minipuerto PF llaman a NdisMEnableVirtualization para configurar los campos de funcionalidad extendida SR-IOV en el espacio de configuración pci. Esta llamada se usa para habilitar o deshabilitar la virtualización en el espacio de configuración, y también para especificar el número de máquinas virtuales que el adaptador de red debe exponer al tejido PCIe.

Cuando el controlador de minipuerto PF controla una solicitud de método OID de OID_NIC_SWITCH_CREATE_SWITCH, el controlador llama a NdisMEnableVirtualization para habilitar la virtualización en el adaptador de red para el conmutador NIC. El controlador lo hace llamando a NdisMEnableVirtualization con la siguiente configuración de parámetros.

Término Descripción
NumVFs Establezca en el número de máquinas virtuales que se habilitarán para el conmutador de NIC.
EnableVirtualization Establézcalo en TRUE.
 

Cuando el controlador de minipuerto PF controla una solicitud de método OID de OID_NIC_SWITCH_DELETE_SWITCH, el controlador llama a NdisMEnableVirtualization para deshabilitar la virtualización en el adaptador de red. El controlador lo hace llamando a NdisMEnableVirtualization con la siguiente configuración de parámetros:

Término Descripción
NumVFs Establecer en cero.
EnableVirtualization Establézcalo en FALSE.
 

Para obtener más información sobre cómo crear un conmutador NIC, consulte Creación de un conmutador NIC.

Para obtener más información sobre la interfaz SR-IOV, vea Información general sobre la virtualización de E/S raíz única (SR-IOV).

Interacción con un controlador de bus virtual

Si un proveedor de hardware independiente (IHV) proporciona un controlador de bus virtual (VBD) como parte de su paquete de controladores SR-IOV, su controlador de minipuerto no debe llamar a NdisMEnableVirtualization. En su lugar, el controlador debe interactuar con VBD a través de un canal de comunicación privado y solicitar que la llamada de VBD EnableVirtualization. Esta función la proporciona la interfaz GUID_PCI_VIRTUALIZATION_INTERFACE compatible con el controlador de bus PCI subyacente.

El VBD que se ejecuta en el sistema operativo de administración de la partición primaria de Hyper-V puede consultar la interfaz de GUID_PCI_VIRTUALIZATION_INTERFACE mediante la emisión de una solicitud de IRP_MN_QUERY_INTERFACE a su objeto de dispositivo físico (PDO) en el bus PCI. Esta solicitud se debe realizar desde IRQL = PASSIVE_LEVEL. En esta solicitud, el controlador debe establecer el parámetro InterfaceType en GUID_PCI_VIRTUALIZATION_INTERFACE.

Requisitos

Requisito Value
Cliente mínimo compatible Se admite en NDIS 6.30 y versiones posteriores.
Plataforma de destino Universal
Encabezado ndis.h (incluya Ndis.h)
Library Ndis.lib
IRQL PASSIVE_LEVEL

Consulte también

EnableVirtualization

GUID_PCI_VIRTUALIZATION_INTERFACE

OID_NIC_SWITCH_CREATE_SWITCH

OID_NIC_SWITCH_DELETE_SWITCH