Função NdisMEnableVirtualization (ndis.h)

Um driver de miniporto chama a função NdisMEnableVirtualization durante a criação ou exclusão de um comutador NIC no adaptador de rede. Ao chamar essa função, o driver configura a estrutura de funcionalidade estendida SR-IOV (virtualização de E/S de raiz única) no espaço de configuração do PCI Express (PCIe) para a PF (Função Física) do adaptador de rede.

ObservaçãoNdisMEnableVirtualization só deve ser chamado pelo driver de miniporto para o PF do adaptador de rede.
 

Sintaxe

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

Parâmetros

[in] NdisMiniportHandle

O identificador de adaptador de rede que o NDIS passou para o parâmetro MiniportAdapterHandle de MiniportInitializeEx.

[in] NumVFs

Um valor USHORT que contém o número de VFs (Funções Virtuais) que devem ser habilitadas para o adaptador de rede. NdisMEnableVirtualization define o membro NumVFs da estrutura de Capacidade Estendida SR-IOV para o valor do parâmetro NumVFs .

Nota Se o parâmetro EnableVirtualization for FALSE, NumVFs deverá ser definido como zero.
 

[in] EnableVFMigration

Esse parâmetro é reservado para NDIS e deve ser definido como FALSE.

[in] EnableMigrationInterrupt

Esse parâmetro é reservado para NDIS e deve ser definido como FALSE.

[in] EnableVirtualization

Um valor BOOLEAN que especifica se a virtualização deve ser habilitada no espaço de configuração PCI do adaptador de rede. Se EnableVirtualization for TRUE, NdisMEnableVirtualization definirá o bit Habilitar VF do membro do controle SR-IOV. NdisMEnableVirtualization limpa esse bit se EnableVirtualization for FALSE.

Retornar valor

NdisMEnableVirtualization pode retornar um dos seguintes valores de status.

Código de retorno Descrição
NDIS_STATUS_SUCCESS
A operação de virtualização foi concluída com êxito.
NDIS_STATUS_NOT_SUPPORTED
O adaptador ou sistema não dá suporte a SR-IOV.
NDIS_STATUS_INVALID_PARAMETER
O parâmetro EnableVirtualization é definido como FALSE e o parâmetro NumVFs é definido como um valor diferente de zero.
NDIS_STATUS_FAILURE
Falha na operação de virtualização.
Nota A função NdisMEnableVirtualization falhará se for chamada para habilitar a virtualização quando a virtualização já estiver habilitada. O driver deve primeiro desabilitar a virtualização (chamando a função com o parâmetro EnableVirtualization definido como FALSE) antes que o driver possa reabilitar a virtualização.
 

Comentários

Os drivers de miniporto PF chamam NdisMEnableVirtualization para configurar os campos de Capacidade Estendida SR-IOV no espaço de configuração do PCI. Essa chamada é usada para habilitar ou desabilitar a virtualização no espaço de configuração e também para especificar o número de VFs que devem ser expostas à malha PCIe pelo adaptador de rede.

Quando o driver de miniporto PF lida com uma solicitação de método OID de OID_NIC_SWITCH_CREATE_SWITCH, o driver chama NdisMEnableVirtualization para habilitar a virtualização no adaptador de rede para o comutador NIC. O driver faz isso chamando NdisMEnableVirtualization com as configurações de parâmetro a seguir.

Termo Descrição
NumVFs Defina como o número de VFs a serem habilitados para a opção NIC.
EnableVirtualization Defina como TRUE.
 

Quando o driver de miniporto PF lida com uma solicitação de método OID de OID_NIC_SWITCH_DELETE_SWITCH, o driver chama NdisMEnableVirtualization para desabilitar a virtualização no adaptador de rede. O driver faz isso chamando NdisMEnableVirtualization com as seguintes configurações de parâmetro:

Termo Descrição
NumVFs Defina como zero.
EnableVirtualization Defina como FALSE.
 

Para obter mais informações sobre como criar um comutador NIC, consulte Criando um comutador NIC.

Para obter mais informações sobre a interface SR-IOV, consulte Visão geral da SR-IOV (Virtualização de E/S de Raiz Única).

Interfacing to a Virtual Bus Driver

Se um IHV (fornecedor independente de hardware) fornecer um VBD (driver de barramento virtual) como parte de seu pacote de driver SR-IOV, seu driver de miniporto não deverá chamar NdisMEnableVirtualization. Em vez disso, o driver deve fazer interface com o VBD por meio de um canal de comunicação privado e solicitar que o VBD chame EnableVirtualization. Essa função é fornecida pela interface GUID_PCI_VIRTUALIZATION_INTERFACE compatível com o driver de barramento PCI subjacente.

O VBD executado no sistema operacional de gerenciamento da partição pai do Hyper-V pode consultar a interface de GUID_PCI_VIRTUALIZATION_INTERFACE emitindo uma solicitação de IRP_MN_QUERY_INTERFACE para seu PDO (objeto de dispositivo físico) no barramento PCI. Essa solicitação deve ser feita de IRQL = PASSIVE_LEVEL. Nessa solicitação, o driver deve definir o parâmetro InterfaceType como GUID_PCI_VIRTUALIZATION_INTERFACE.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte no NDIS 6.30 e posterior.
Plataforma de Destino Universal
Cabeçalho ndis.h (inclua Ndis.h)
Biblioteca Ndis.lib
IRQL PASSIVE_LEVEL

Confira também

EnableVirtualization

GUID_PCI_VIRTUALIZATION_INTERFACE

OID_NIC_SWITCH_CREATE_SWITCH

OID_NIC_SWITCH_DELETE_SWITCH