OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK

NDIS emite una solicitud de método de identificador de objeto (OID) de OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK para notificar al controlador de miniporte de una función virtual (VF) PCI Express (PCIe) que los datos de uno o varios bloques de configuración han cambiado. NDIS emite este OID cuando el controlador de miniporte para una función física PCIe (PF) llama a NdisMInvalidateConfigBlock.

El miembro InformationBuffer de la estructura NDIS_OID_REQUEST contiene un puntero a una estructura de NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO . Esta estructura especifica uno o varios bloques de configuración de función virtual (VF) cuyos datos han cambiado (invalidado) el controlador de minipuerto PF.

Observaciones

Un bloque de configuración de VF se usa para la comunicación backchannel entre los controladores de miniporte PF y VF. El IHV puede definir uno o varios bloques de configuración de VF para el dispositivo. Cada bloque de configuración de VF tiene un formato, longitud y identificador de bloque definidos por IHV.

Nota Los datos de cada bloque de configuración de VF solo los usan los controladores de miniporte PF y VF.

Los datos de configuración de VF se intercambian entre los siguientes controladores:

  • Controlador VF, que se ejecuta en el sistema operativo invitado. Este sistema operativo se ejecuta dentro de una partición secundaria de Hyper-V.

  • Controlador PF, que se ejecuta en el sistema operativo de administración. Este sistema operativo se ejecuta dentro de la partición primaria de Hyper-V.

Para controlar las notificaciones de datos de configuración de VF no válidos, NDIS y los controladores de miniporte realizan los pasos siguientes:

  1. En el sistema operativo invitado, NDIS emite una solicitud de control de E/S de IOCTL_VPCI_INVALIDATE_BLOCK solicitud. Cuando se completa este IOCTL, se notifica a NDIS que los datos de configuración de VF han cambiado.

  2. En el sistema operativo de administración, se producen los pasos siguientes:

    1. El controlador de miniporte PF llama a la función NdisMInvalidateConfigBlock para notificar a NDIS que los datos de configuración de VF han cambiado y ya no son válidos. El controlador establece el parámetro BlockMask en una máscara de bits de ULONGLONG que especifica qué bloques de configuración de VF han cambiado. Cada bit de la máscara de bits corresponde a un bloque de configuración de VF. Si el bit se establece en uno, los datos del bloque de configuración de VF correspondiente han cambiado.

    2. NDIS señala la pila de virtualización, que se ejecuta en el sistema operativo de administración, sobre el cambio a los datos del bloque de configuración de VF. La pila de virtualización almacena en caché los datos del parámetro BlockMask .

      Nota Cada vez que el controlador de miniporte PF llama a NdisMInvalidateConfigBlock, la pila de virtualización ORs los datos del parámetro BlockMask con el valor actual en su memoria caché.

    3. La pila de virtualización notifica al controlador PCI virtual (VPCI), que se ejecuta en el sistema operativo invitado, sobre la invalidación de los datos de configuración de VF. La pila de virtualización envía los datos de parámetros BlockMask almacenados en caché al controlador VPCI.

  3. En el sistema operativo invitado, se producen los pasos siguientes:

    1. El controlador VPCI guarda los datos de parámetros BlockMask almacenados en caché en el miembro BlockMask de la estructura de VPCI_INVALIDATE_BLOCK_OUTPUT asociada a la solicitud de IOCTL_VPCI_INVALIDATE_BLOCK .

    2. El controlador VPCI completa correctamente la solicitud de IOCTL_VPCI_INVALIDATE_BLOCK . Cuando esto sucede, NDIS emite una solicitud de método OID de OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK al controlador de miniporte de VF. Se pasa un NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO en la solicitud OID. Esta estructura contiene los datos de parámetros BlockMask almacenados en caché.

      NDIS también emite otra solicitud de IOCTL_VPCI_INVALIDATE_BLOCK para controlar las notificaciones sucesivas de cambios en los datos de configuración de VF.

    3. Cuando el controlador VF controla la solicitud de OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK, lee los datos de los bloques de configuración de VF especificados.

Para obtener más información sobre la comunicación backchannel dentro de la interfaz de virtualización de E/S raíz única (SR-IOV), consulte SR-IOV PF/VF Backchannel Communication.

Códigos de estado de devolución

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

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_VF_INVALIDATE_CONFIG_BLOCK_INFO tienen valores no válidos.

NDIS_STATUS_INVALID_LENGTH

El búfer de información era demasiado corto. NDIS establece data . SET_INFORMATION. BytesNeeded miembro de la estructura NDIS_OID_REQUEST con el tamaño de la estructura de NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO .

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


IOCTL_VPCI_INVALIDATE_BLOCK

NDIS_OID_REQUEST

NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO

NdisMInvalidateConfigBlock

OID_SRIOV_READ_VF_CONFIG_SPACE

VPCI_INVALIDATE_BLOCK_OUTPUT