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.
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.
Retornar valor
NdisMQueryProbedBars pode retornar um dos seguintes valores de status.
Código de retorno | Descrição |
---|---|
|
A operação de consulta foi concluída com êxito. |
|
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.
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