Compartilhar via


OID_SRIOV_PROBED_BARS

O NDIS emite uma solicitação de consulta OID (identificador de objeto) de OID_SRIOV_PROBED_BARS para obter os valores dos BARs (Registros de Endereço Base) PCI Express (PCIe) de um adaptador de rede. Essa função retorna os valores bar que foram relatados pelo adaptador de rede após uma consulta executada pelo driver de barramento PCI. Essa consulta determina a memória ou o espaço de endereço de E/S exigido pelo adaptador de rede.

O NDIS emite solicitações de consulta OID de OID_SRIOV_PROBED_BARS ao driver de miniporto para a função física PCIe (PF) do adaptador de rede. Essa solicitação de consulta OID é necessária para drivers de miniporta PF que dão suporte à interface SR-IOV (virtualização de E/S de raiz única).

O membro InformationBuffer da estrutura NDIS_OID_REQUEST contém um ponteiro para um buffer. Esse buffer é formatado para conter o seguinte:

  • Uma estrutura NDIS_SRIOV_PROBED_BARS_INFO que contém os parâmetros para uma operação de leitura nos BARs PCI de um adaptador de rede.

  • Uma matriz de valores ULONG para cada BARRA do adaptador de rede PCIe. O número máximo de elementos dentro dessa matriz é PCI_TYPE0_ADDRESSES.

Comentários

O driver de barramento PCI, que é executado no sistema operacional de gerenciamento da partição pai do Hyper-V, consulta os requisitos de memória ou espaço de endereço de E/S de cada BAR (Registro de Endereço Base) PCI do adaptador de rede. O driver de barramento PCI executa essa consulta quando detecta pela primeira vez o adaptador no barramento.

Por meio dessa consulta PCI BAR, o driver de barramento PCI determina o seguinte:

  • Se há suporte para uma BARRA PCI pelo adaptador de rede.

  • Se houver suporte para uma BARRA, quanta memória ou espaço de endereço de E/S é necessário para a BARRA.

O driver de barramento VPCI (PCI virtual) é executado no sistema operacional convidado de uma partição filho do Hyper-V. Quando uma VF (Função Virtual) PCI Express (PCIe) é anexada à partição filho, o driver de barramento VPCI expõe um adaptador de rede virtual para o VF (adaptador de rede VF). Antes de fazer isso, o driver de barramento VPCI deve executar uma consulta PCI BAR para determinar a memória necessária ou o espaço de endereço exigido pelo adaptador de rede VF.

Como o acesso ao espaço de configuração PCI é uma operação privilegiada, ele só pode ser executado por componentes executados no sistema operacional de gerenciamento de uma partição pai do Hyper-V. Quando o driver de barramento VPCI consulta os BARs PCI, o NDIS emite uma solicitação de consulta OID de OID_SRIOV_PROBED_BARS para o driver de miniporto PF. Os resultados retornados por essa solicitação de consulta OID são encaminhados para o driver de barramento VPCI para que ele possa determinar quanto espaço de endereço de memória seria necessário para o adaptador de rede VF.

Nota Solicitações OID de OID_SRIOV_PROBED_BARS só podem ser emitidas pelo NDIS. A solicitação OID não deve ser emitida por drivers sobrepostos, como o protocolo de drivers de filtro.

A solicitação de consulta OID_SRIOV_PROBED_BARS contém uma estrutura NDIS_SRIOV_PROBED_BARS_INFO . Quando o driver de miniporto PF manipula esse OID, o driver deve retornar os valores da BARRA PCI dentro da matriz referenciada pelo membro BaseRegisterValuesOffset da estrutura NDIS_SRIOV_PROBED_BARS_INFO . Para cada deslocamento dentro da matriz, o driver de miniporto PF deve definir o elemento de matriz como o valor ULONG da BARRA no mesmo deslocamento dentro do espaço de configuração PCI do adaptador físico.

Cada valor BAR retornado pelo driver deve ser o mesmo valor que seguiria uma consulta PCI BAR, conforme executado pelo driver PCI executado no sistema operacional de gerenciamento. O driver de miniporto PF pode chamar NdisMQueryProbedBars para determinar essas informações.

Para obter mais informações sobre os BARs de um dispositivo PCI, consulte a Especificação do Barramento Local PCI.

Para obter mais informações sobre como consultar registros PCI BAR para uma VF, consulte Consultando os registros de endereço base 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 consulta de OID_SRIOV_PROBED_BARS:

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 miniporto PF 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_PROBED_BARS_INFO têm valores inválidos.

NDIS_STATUS_INVALID_LENGTH

O buffer de informações é menor que (sizeof(NDIS_SRIOV_PROBED_BARS_INFO) + PCI_TYPE0_ADDRESSES). O driver de miniporto PF deve definir o DATA. QUERY_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.

Cabeçalho

Ntddndis.h (inclua Ndis.h)

Confira também


NDIS_OID_REQUEST

NDIS_SRIOV_PROBED_BARS_INFO

NdisMQueryProbedBars