Função NdisMQueryProbedBars (ndis.h)

Um driver de miniporto chama a função NdisMQueryProbedBars 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 o espaço de endereço de E/S ou memória exigido pelo adaptador de rede.

ObservaçãoNdisMQueryProbedBars só deve ser chamado pelo driver de miniporto para PF (Função Física PCIe) do adaptador de rede.
 

Sintaxe

NDIS_STATUS NdisMQueryProbedBars(
  [in]  NDIS_HANDLE NdisMiniportHandle,
  [out] PULONG      BaseRegisterValues
);

Parâmetros

[in] NdisMiniportHandle

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

[out] BaseRegisterValues

Um ponteiro para uma matriz de valores ULONG. A matriz contém um valor ULONG para cada BARRA do adaptador de rede PCIe.

ObservaçãoNdisMQueryProbedBars retorna um máximo de valores PCI_TYPE0_ADDRESSES dentro dessa matriz.
 

Retornar valor

NdisMQueryProbedBars pode retornar um dos seguintes valores de status.

Código de retorno Descrição
NDIS_STATUS_SUCCESS
A operação de consulta foi concluída com êxito.
NDIS_STATUS_FAILURE
Falha na operação de consulta.

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 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 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 exporá 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.

Durante a manipulação dessa solicitação OID, o driver pode chamar NdisMQueryProbedBars para obter os valores retornados da consulta BAR executada pelo driver PCI.

Para obter mais informações sobre como consultar registros PCI BAR para um VF, consulte Consultando os registros de endereço base PCI de uma função virtual.

Para obter mais informações sobre a interface SR-IOV, consulte Visão geral da SR-IOV (Virtualização de E/S 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 NdisMQueryProbedBars. Em vez disso, o driver deve fazer a interface com o VBD por meio de um canal de comunicação privado e solicitar que o VBD chame GetVirtualFunctionProbedBars. Essa função é exposta a partir da 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

GUID_PCI_VIRTUALIZATION_INTERFACE

GetVirtualFunctionProbedBars

OID_SRIOV_PROBED_BARS