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.
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.
Valor devuelto
NdisMQueryProbedBars puede devolver uno de los siguientes valores de estado.
Código devuelto | Descripción |
---|---|
|
La operación de consulta se completó correctamente. |
|
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.
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