Consultar los registros de direcciones base pci de una función virtual
Nota Este método solo se puede usar mediante controladores que se ejecutan en el sistema operativo de administración de la partición primaria de Hyper-V.
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 PCI realiza esta consulta PCI BAR de la siguiente manera:
El controlador PCI escribe primero todos los en una barra.
A continuación, el controlador PCI lee la barra para determinar la memoria o el espacio de direcciones requeridos por la barra. Un valor de cero indica que el adaptador de red no admite 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 se conecta una función virtual (VF) PCI Express (PCIe) a la partición secundaria, el controlador de bus VPCI expone 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.
Nota Las solicitudes de OID de OID_SRIOV_BAR_RESOURCES solo pueden ser emitidas por NDIS. La solicitud de OID no debe emitirse mediante controladores excesivos, como los controladores de protocolo o filtro.
La solicitud de consulta OID_SRIOV_PROBED_BARS contiene una estructura de NDIS_SRIOV_PROBED_BARS_INFO . Cuando el controlador de miniporte PF controla este OID, el controlador debe devolver los valores PCI BAR dentro de la matriz a la que hace referencia el miembro BaseRegisterValuesOffset de la estructura NDIS_SRIOV_PROBED_BARS_INFO . Para cada desplazamiento dentro de la matriz, el controlador de minipuerto PF debe establecer el elemento de matriz en el valor ULONG de la barra en el mismo desplazamiento dentro del espacio de configuración PCI del adaptador de red físico.
Cada valor BAR devuelto por el controlador debe ser el mismo valor que seguiría una consulta PCI BAR realizada por el controlador PCI que se ejecuta en el sistema operativo de administración. El controlador de minipuerto PF puede llamar a NdisMQueryProbedBars para determinar esta información.
Para obtener más información sobre los registros de direcciones base de un dispositivo PCI, consulte la especificación de bus local pci.