Función NdisMQueryProbedBars (ndis.h)

Un controlador de minipuerto llama a la función NdisMQueryProbedBars para obtener los valores de los registros de direcciones base (BAR) de PCI Express (PCIe) de un adaptador de red. Esta función devuelve los valores BAR notificados por el adaptador de red después de una consulta realizada por el controlador de bus PCI. Esta consulta determina el espacio de direcciones de E/S o memoria que necesita el adaptador de red.

NotaNdisMQueryProbedBars solo debe ser llamado por el controlador de minipuerto para la función física PCIe (PF) del adaptador de red.
 

Sintaxis

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

Parámetros

[in] NdisMiniportHandle

Identificador del adaptador de red que NDIS pasó al parámetro MiniportAdapterHandle de MiniportInitializeEx.

[out] BaseRegisterValues

Puntero a una matriz de valores de ULONG. La matriz contiene un valor ULONG para cada BARRA del adaptador de red PCIe.

NotaNdisMQueryProbedBars devuelve un máximo de PCI_TYPE0_ADDRESSES valores dentro de esta matriz.
 

Valor devuelto

NdisMQueryProbedBars puede devolver uno de los siguientes valores de estado.

Código devuelto Descripción
NDIS_STATUS_SUCCESS
La operación de consulta se completó correctamente.
NDIS_STATUS_FAILURE
Error en la operación de consulta.

Comentarios

El controlador de bus PCI, que se ejecuta en el sistema operativo de administración de la partición primaria de Hyper-V, consulta los requisitos de espacio de direcciones de E/S o memoria de cada registro de direcciones base PCI (BAR) del adaptador de red. El controlador de bus PCI realiza esta consulta cuando detecta por primera vez el adaptador en el bus.

A través de esta consulta PCI BAR, el controlador de bus PCI determina lo siguiente:

  • Si el adaptador de red admite una BARRA PCI.
  • Si se admite una barra, se requiere mucha memoria o espacio de direcciones de E/S para la barra.
El controlador de bus pci virtual (VPCI) se ejecuta en el sistema operativo invitado de una partición secundaria de Hyper-V. Cuando una función virtual de PCI Express (PCIe) (VF) está conectada a la partición secundaria, el controlador de bus VPCI expondrá un adaptador de red virtual para el adaptador de red VF (adaptador de red VF). Antes de hacerlo, el controlador de bus VPCI debe realizar una consulta PCI BAR para determinar la memoria o el espacio de direcciones necesario que requiere el adaptador de red VF.

Dado que el acceso al espacio de configuración de PCI es una operación con privilegios, solo los componentes que se ejecutan en el sistema operativo de administración de una partición primaria de Hyper-V. Cuando el controlador de bus VPCI consulta los BAR pci, NDIS emite una solicitud de consulta de identificador de objeto (OID) de OID_SRIOV_PROBED_BARS al controlador de miniporte PF. Los resultados devueltos por esta solicitud de consulta OID se reenvían al controlador de bus VPCI para que pueda determinar la cantidad de espacio de direcciones de memoria que necesitaría el adaptador de red VF.

Durante el control de esta solicitud OID, el controlador puede llamar a NdisMQueryProbedBars para obtener los valores devueltos de la consulta BAR realizada por el controlador PCI.

Para obtener más información sobre cómo consultar los registros de PCI BAR para un VF, consulte Consulta de los registros de direcciones base PCI de una función virtual.

Para obtener más información sobre la interfaz SR-IOV, vea Información general sobre la virtualización de E/S raíz única (SR-IOV).

Interacción con un controlador de bus virtual

Si un proveedor de hardware independiente (IHV) proporciona un controlador de bus virtual (VBD) como parte de su paquete de controladores SR-IOV, su controlador de minipuerto no debe llamar a NdisMQueryProbedBars. En su lugar, el controlador debe interactuar con VBD a través de un canal de comunicación privado y solicitar que el VBD llame a GetVirtualFunctionProbedBars. Esta función se expone desde la interfaz GUID_PCI_VIRTUALIZATION_INTERFACE compatible con el controlador de bus PCI subyacente.

El VBD que se ejecuta en el sistema operativo de administración de la partición primaria de Hyper-V puede consultar la interfaz de GUID_PCI_VIRTUALIZATION_INTERFACE mediante la emisión de una solicitud de IRP_MN_QUERY_INTERFACE a su objeto de dispositivo físico (PDO) en el bus PCI. Esta solicitud se debe realizar desde IRQL = PASSIVE_LEVEL. En esta solicitud, el controlador debe establecer el parámetro InterfaceType en GUID_PCI_VIRTUALIZATION_INTERFACE.

Requisitos

Requisito Value
Cliente mínimo compatible Se admite en NDIS 6.30 y versiones posteriores.
Plataforma de destino Universal
Encabezado ndis.h (incluya Ndis.h)
Library Ndis.lib
IRQL PASSIVE_LEVEL

Consulte también

GUID_PCI_VIRTUALIZATION_INTERFACE

GetVirtualFunctionProbedBars

OID_SRIOV_PROBED_BARS