GET_VIRTUAL_FUNCTION_PROBED_BARS función de devolución de llamada (wdm.h)
La rutina GetVirtualFunctionProbedBars devuelve los valores de los registros de direcciones base (BAR) de PCI Express (PCIe) de un dispositivo que admite la interfaz de virtualización de E/S raíz única (SR-IOV).
GetVirtualFunctionProbedBars devuelve los valores BAR notificados por el dispositivo 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 requiere el dispositivo.
Sintaxis
GET_VIRTUAL_FUNCTION_PROBED_BARS GetVirtualFunctionProbedBars;
NTSTATUS GetVirtualFunctionProbedBars(
[in, out] PVOID Context,
[out] PULONG BaseRegisterValues
)
{...}
Parámetros
[in, out] Context
Puntero a información de contexto específica de la interfaz. El autor de la llamada pasa el valor que se pasa como miembro Context de la estructura PCI_VIRTUALIZATION_INTERFACE para la interfaz.
[out] BaseRegisterValues
Puntero a una matriz de valores de ULONG. La rutina GetVirtualFunctionProbedBars devuelve un valor para cada BARRA del dispositivo.
GetVirtualFunctionProbedBars devuelve un máximo de valores de PCI_TYPE0_ADDRESSES dentro de esta matriz.
Valor devuelto
La rutina GetVirtualFunctionProbedBars devuelve uno de los siguientes valores NTSTATUS:
Código devuelto | Descripción |
---|---|
STATUS_SUCCESS | La operación se ha completado correctamente. |
STATUS_INVALID_DEVICE_STATE | El dispositivo no admite la interfaz SR-IOV. |
Comentarios
El controlador de autobús 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 BARRA del dispositivo. El controlador de bus PCI realiza esta consulta cuando detecta por primera vez el adaptador en el bus.
A través de esta consulta BAR, el controlador de bus PCI determina lo siguiente:
Si el dispositivo admite una BARRA.
Si se admite una BARRA, se requiere memoria o espacio de direcciones de E/S para la BARRA.
El controlador PCI realiza esta consulta BAR de la siguiente manera:
El controlador de bus PCI escribe 0xFFFFFFFF en una BARRA.
El controlador de bus PCI lee la BARRA para determinar la memoria o el espacio de direcciones que requiere el dispositivo. Un valor de cero indica que el dispositivo no admite la BARRA.
La interfaz GUID_PCI_VIRTUALIZATION_INTERFACE proporciona la rutina GetVirtualFunctionProbedBars.
Las notas siguientes se aplican a la rutina GetVirtualFunctionProbedBars :
La interfaz SR-IOV no requiere que los BAR de un PCIe VF cumplan con el protocolo para determinar el tamaño del bloque de memoria o el espacio de direcciones de E/S de una BARRA. Por lo tanto, el controlador PCI virtual (VPCI), que se ejecuta en el sistema operativo invitado, determina el tamaño mediante el uso del tamaño equivalente de las BAR en el dispositivo físico. El controlador VPCI obtiene esta información llamando a la rutina GetVirtualFunctionProbedBars .
El controlador VPCI requiere el tamaño del espacio de direcciones de E/S o memoria para cada BARRA después de que se haya iniciado el dispositivo físico. En ese momento, el controlador PCI no puede realizar una consulta BAR en el dispositivo sin modificar el valor actual de LA BARRA. Por lo tanto, cuando el controlador VPCI llama a la rutina GetVirtualFunctionProbedBars , el controlador PCI devuelve la información bar que obtuvo durante la consulta BAR. El controlador PCI realizó esta consulta cuando el dispositivo se detectó por primera vez en el bus.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Compatible con Windows Server 2012 y versiones posteriores de Windows. |
Plataforma de destino | Escritorio |
Encabezado | wdm.h (incluya Wdm.h) |
IRQL | PASSIVE_LEVEL |