Compartilhar via


OID_SRIOV_READ_VF_CONFIG_SPACE

Um driver sobreposto emite uma solicitação de método OID (identificador de objeto) de OID_SRIOV_READ_VF_CONFIG_SPACE para ler dados do espaço de configuração PCI Express (PCIe) para uma pcie virtual function (VF) especificada no adaptador de rede.

Após um retorno bem-sucedido dessa solicitação de método OID, o membro InformationBuffer da estrutura NDIS_OID_REQUEST contém um ponteiro para um buffer alocado pelo chamador. Esse buffer é formatado para conter o seguinte:

Comentários

O driver de miniporta VF é executado no sistema operacional convidado de uma partição filho do Hyper-V. Por isso, o driver de miniporto VF não pode acessar diretamente recursos de hardware, como o espaço de configuração PCI do VF. Somente o driver de miniporta para a função física PCIe (PF) pode acessar o espaço de configuração de PCI para uma VF. O driver de miniporto PF é executado no sistema operacional de gerenciamento de uma partição pai do Hyper-V e tem acesso privilegiado aos recursos de VF.

Para ler o espaço de configuração do VF PCI, os drivers sobrepostos executados no sistema operacional de gerenciamento emitem a solicitação de método OID de OID_SRIOV_READ_VF_CONFIG_SPACE para o driver de miniporto PF. Essa solicitação de método OID é necessária para drivers de miniporta PF que dão suporte à interface SR-IOV (virtualização de E/S de raiz única).

Por exemplo, a pilha de virtualização executada no sistema operacional de gerenciamento emite a solicitação de método OID de OID_SRIOV_READ_VF_CONFIG_SPACE quando o driver de miniporto VF chama NdisMGetBusData para ler seu espaço de configuração de PCI VF.

Quando ele lida com a solicitação de método OID de OID_SRIOV_READ_VF_CONFIG_SPACE, o driver de miniporto PF deve seguir estas diretrizes:

  • O driver de miniporta deve verificar se o VF, especificado pelo membro VFId da estrutura NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS , tem recursos que foram alocados anteriormente. O driver de miniporta aloca recursos para uma VF por meio de uma solicitação de método OID de OID_NIC_SWITCH_ALLOCATE_VF. Se os recursos para o VF especificado não tiverem sido alocados, o driver deverá falhar na solicitação OID.

  • O driver de miniporta deve verificar se o buffer (referenciado pelo membro InformationBuffer da estrutura NDIS_OID_REQUEST ) é grande o suficiente para retornar os dados de espaço de configuração do PCIe solicitados. Se isso não for verdadeiro, o driver deverá falhar na solicitação OID.

  • O driver de miniporto normalmente chama NdisMGetVirtualFunctionBusData para consultar o espaço de configuração de PCIe solicitado. No entanto, o driver de miniporta também pode retornar dados de espaço de configuração PCIe para o VF que o driver armazenou em cache de operações de leitura ou gravação anteriores do espaço de configuração pcie.

    Nota 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 NdisMGetVirtualFunctionBusData. 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 ReadVfConfigBlock. Essa função é exposta da interface GUID_VPCI_INTERFACE_STANDARD que é compatível com o driver de barramento VPCI (PCI virtual) subjacente.

Se o driver de miniporto PF puder concluir com êxito a solicitação OID, o driver deverá copiar os dados de espaço de configuração PCI solicitados para o buffer referenciado pelo membro InformationBuffer da estrutura NDIS_OID_REQUEST . O driver copia os dados para o buffer no deslocamento especificado pelo membro BufferOffset da estrutura NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS .

Para obter mais informações, consulte Consultando os dados de configuração de PCI de uma função virtual.

Códigos de status de retorno

O driver de miniporto PF retorna um dos seguintes códigos de status para a solicitação de método OID de OID_SRIOV_READ_VF_CONFIG_SPACE.

Código de status Descrição

NDIS_STATUS_SUCCESS

A solicitação OID foi concluída com êxito.

NDIS_STATUS_NOT_SUPPORTED

O driver de miniporta não dá suporte à interface SR-IOV (virtualização de E/S de raiz única) ou não está habilitado para usar a interface .

NDIS_STATUS_INVALID_PARAMETER

Um ou mais dos membros da estrutura NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS têm valores inválidos.

NDIS_STATUS_INVALID_LENGTH

O buffer de informações era muito curto. O driver de miniporta deve definir os DADOS. METHOD_INFORMATION. Membro BytesNeeded na estrutura NDIS_OID_REQUEST para o tamanho mínimo do buffer necessário.

NDIS_STATUS_FAILURE

A solicitação falhou por outros motivos.

Requisitos

Versão

Com suporte no NDIS 6.30 e posterior.

parâmetro

Ntddndis.h (inclua Ndis.h)

Confira também


GUID_VPCI_INTERFACE_STANDARD

NDIS_OID_REQUEST

NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS

NdisMGetBusData

NdisMGetVirtualFunctionBusData

OID_NIC_SWITCH_ALLOCATE_VF

ReadVfConfigBlock