Compartilhar via


Consultar os registros de endereço base PCI de uma função virtual

Nota Esse método só pode ser usado por drivers overlying executados no sistema operacional de gerenciamento da partição pai do Hyper-V.

O driver de barramento PCI, que é executado no sistema operacional de gerenciamento da partição pai do Hyper-V, consulta os requisitos de espaço de endereço de E/S ou memória de cada registro de endereço base de PCI (BAR) 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 motorista do barramento PCI determina o seguinte:

  • Se há suporte para uma BARRA de 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 PCI executa essa consulta PCI BAR da seguinte maneira:

  1. Primeiro, o driver PCI grava todos os que estão em uma BARRA.

  2. Em seguida, o driver PCI lê a BARRA para determinar a memória necessária ou o espaço de endereço exigido pela BARRA. Um valor zero indica que a BARRA não é compatível com o adaptador de rede.

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 disso, 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 (identificador de objeto) 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_BAR_RESOURCES só podem ser emitidas pelo NDIS. A solicitação OID não deve ser emitida por drivers sobrepostos, como drivers de protocolo ou 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 de BARRA de 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 de rede física.

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 registros de endereço base de um dispositivo PCI, consulte a Especificação do Barramento Local PCI.