OID_SRIOV_READ_VF_CONFIG_SPACE

Un controlador sobreajuste emite una solicitud de método de identificador de objeto (OID) de OID_SRIOV_READ_VF_CONFIG_SPACE para leer datos del espacio de configuración de PCI Express (PCIe) para una función virtual PCIe (VF) especificada en el adaptador de red.

Después de una devolución correcta de esta solicitud de método OID, el miembro InformationBuffer de la estructura NDIS_OID_REQUEST contiene un puntero a un búfer asignado por el autor de la llamada. Este búfer tiene el formato siguiente:

  • Estructura NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS que contiene los parámetros para una operación de lectura del espacio de configuración PCI de un VF.

  • Espacio de búfer adicional para que los datos se lean desde el espacio de configuración pci.

Observaciones

El controlador de miniporte VF se ejecuta en el sistema operativo invitado de una partición secundaria de Hyper-V. Debido a esto, el controlador de minipuerto VF no puede acceder directamente a los recursos de hardware, como el espacio de configuración PCI de VF. Solo el controlador de minipuerto de la función física PCIe (PF) puede acceder al espacio de configuración pci para un VF. El controlador de miniporte PF se ejecuta en el sistema operativo de administración de una partición primaria de Hyper-V y tiene acceso con privilegios a los recursos de VF.

Para leer el espacio de configuración de PCI de VF, los controladores que se ejecutan en el sistema operativo de administración emiten la solicitud de método OID de OID_SRIOV_READ_VF_CONFIG_SPACE al controlador de minipuerto PF. Esta solicitud de método OID es necesaria para los controladores de minipuerto PF que admiten la interfaz de virtualización de E/S raíz única (SR-IOV).

Por ejemplo, la pila de virtualización que se ejecuta en el sistema operativo de administración emite la solicitud de método OID de OID_SRIOV_READ_VF_CONFIG_SPACE cuando el controlador de miniporte VF llama a NdisMGetBusData para leer desde su espacio de configuración PCI de VF.

Cuando controla la solicitud de método OID de OID_SRIOV_READ_VF_CONFIG_SPACE, el controlador de miniporte PF debe seguir estas directrices:

  • El controlador de minipuerto debe comprobar que el VF, especificado por el miembro VFId de la estructura NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS , tiene recursos que se han asignado previamente. El controlador de minipuerto asigna recursos para un VF a través de una solicitud de método OID de OID_NIC_SWITCH_ALLOCATE_VF. Si no se han asignado recursos para la VF especificada, el controlador debe producir un error en la solicitud OID.

  • El controlador de minipuerto debe comprobar que el búfer (al que hace referencia el miembro InformationBuffer de la estructura NDIS_OID_REQUEST ) es lo suficientemente grande como para devolver los datos de espacio de configuración PCIe solicitados. Si esto no es cierto, el controlador debe producir un error en la solicitud de OID.

  • El controlador de minipuerto normalmente llama a NdisMGetVirtualFunctionBusData para consultar el espacio de configuración de PCIe solicitado. Sin embargo, el controlador de minipuerto también puede devolver datos de espacio de configuración PCIe para el VF que el controlador ha almacenado en caché de las operaciones de lectura o escritura anteriores del espacio de configuración PCIe.

    Nota 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 miniporte no debe llamar a NdisMGetVirtualFunctionBusData. 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 ReadVfConfigBlock. Esta función se expone desde la interfaz de GUID_VPCI_INTERFACE_STANDARD compatible con el controlador de bus pci virtual (VPCI) subyacente.

Si el controlador de miniporte PF puede completar correctamente la solicitud OID, el controlador debe copiar los datos de espacio de configuración PCI solicitados en el búfer al que hace referencia el miembro InformationBuffer de la estructura de NDIS_OID_REQUEST . El controlador copia los datos en el búfer en el desplazamiento especificado por el miembro BufferOffset de NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS estructura.

Para obtener más información, consulte Consulta de los datos de configuración de PCI de una función virtual.

Códigos de estado de devolución

El controlador de minipuerto PF devuelve uno de los siguientes códigos de estado para la solicitud de método OID de OID_SRIOV_READ_VF_CONFIG_SPACE.

Código de estado Descripción

NDIS_STATUS_SUCCESS

La solicitud OID se completó correctamente.

NDIS_STATUS_NOT_SUPPORTED

El controlador de miniporte no admite la interfaz de virtualización de E/S raíz única (SR-IOV) o no está habilitada para usar la interfaz.

NDIS_STATUS_INVALID_PARAMETER

Uno o varios de los miembros de la estructura NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS tienen valores no válidos.

NDIS_STATUS_INVALID_LENGTH

El búfer de información era demasiado corto. El controlador de minipuerto debe establecer data . METHOD_INFORMATION. BytesNeeded miembro de la estructura NDIS_OID_REQUEST al tamaño mínimo del búfer necesario.

NDIS_STATUS_FAILURE

Error en la solicitud por otros motivos.

Requisitos

Versión

Compatible con NDIS 6.30 y versiones posteriores.

Encabezado

Ntddndis.h (include Ndis.h)

Consulte también


GUID_VPCI_INTERFACE_STANDARD

NDIS_OID_REQUEST

NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS

NdisMGetBusData

NdisMGetVirtualFunctionBusData

OID_NIC_SWITCH_ALLOCATE_VF

ReadVfConfigBlock