Compartilhar via


OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK

O NDIS emite uma solicitação de método OID (identificador de objeto) de OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK para notificar o driver de miniporto de uma VF (Função Virtual) PCI Express (PCIe) de que os dados em um ou mais blocos de configuração foram alterados. O NDIS emite esse OID quando o driver de miniporto para uma função física PCIe (PF) chama NdisMInvalidateConfigBlock.

O membro InformationBuffer da estrutura NDIS_OID_REQUEST contém um ponteiro para uma estrutura NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO . Essa estrutura especifica um ou mais blocos de configuração de VF (Função Virtual) cujos dados foram alterados (invalidados) pelo driver de miniporto PF.

Comentários

Um bloco de configuração de VF é usado para comunicação backchannel entre os drivers de miniporto PF e VF. O IHV pode definir um ou mais blocos de configuração de VF para o dispositivo. Cada bloco de configuração de VF tem um formato definido por IHV, comprimento e ID de bloco.

Nota Os dados de cada bloco de configuração de VF são usados apenas pelos drivers de miniporto PF e VF.

Os dados de configuração do VF são trocados entre os seguintes drivers:

  • O driver VF, que é executado no sistema operacional convidado. Esse sistema operacional é executado em uma partição filho do Hyper-V.

  • O driver PF, que é executado no sistema operacional de gerenciamento. Esse sistema operacional é executado dentro da partição pai do Hyper-V.

Para lidar com notificações de dados de configuração de VF inválidos, o NDIS e os drivers de miniporta executam as seguintes etapas:

  1. No sistema operacional convidado, o NDIS emite uma solicitação de controle de E/S de IOCTL_VPCI_INVALIDATE_BLOCK solicitação. Quando esse IOCTL é concluído, o NDIS é notificado de que os dados de configuração do VF foram alterados.

  2. No sistema operacional de gerenciamento, ocorrem as seguintes etapas:

    1. O driver de miniporto PF chama a função NdisMInvalidateConfigBlock para notificar o NDIS de que os dados de configuração do VF foram alterados e não são mais válidos. O driver define o parâmetro BlockMask como uma máscara de bits ULONGLONG que especifica quais blocos de configuração de VF foram alterados. Cada bit na máscara de bits corresponde a um bloco de configuração de VF. Se o bit for definido como um, os dados no bloco de configuração do VF correspondente serão alterados.

    2. O NDIS sinaliza a pilha de virtualização, que é executada no sistema operacional de gerenciamento, sobre a alteração nos dados do bloco de configuração do VF. A pilha de virtualização armazena em cache os dados do parâmetro BlockMask .

      Nota Cada vez que o driver de miniporto PF chama NdisMInvalidateConfigBlock, a pilha de virtualização ORs os dados do parâmetro BlockMask com o valor atual em seu cache.

    3. A pilha de virtualização notifica o driver VPCI (PCI virtual), que é executado no sistema operacional convidado, sobre a invalidação de dados de configuração de VF. A pilha de virtualização envia os dados do parâmetro BlockMask armazenados em cache para o driver VPCI.

  3. No sistema operacional convidado, ocorrem as seguintes etapas:

    1. O driver VPCI salva os dados de parâmetro BlockMask armazenados em cache no membro BlockMask da estrutura VPCI_INVALIDATE_BLOCK_OUTPUT associada à solicitação IOCTL_VPCI_INVALIDATE_BLOCK .

    2. O driver VPCI conclui com êxito a solicitação de IOCTL_VPCI_INVALIDATE_BLOCK . Quando isso acontece, o NDIS emite uma solicitação de método OID de OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK para o driver de miniporta VF. Um NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO é passado na solicitação OID. Essa estrutura contém os dados de parâmetro BlockMask armazenados em cache.

      O NDIS também emite outra solicitação IOCTL_VPCI_INVALIDATE_BLOCK para lidar com notificações sucessivas de alterações nos dados de configuração do VF.

    3. Quando o driver VF manipula a solicitação OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK, ele lê dados dos blocos de configuração de VF especificados.

Para obter mais informações sobre a comunicação backchannel dentro da interface sr-IOV (virtualização de E/S de raiz única), consulte Comunicação backchannel sr-IOV PF/VF.

Códigos de status de retorno

O driver de miniporta retorna um dos seguintes códigos de status para a solicitação de método OID de OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK.

Código de status Descrição

NDIS_STATUS_SUCCESS

A solicitação OID foi concluída com êxito.

NDIS_STATUS_NOT_SUPPORTED

O driver de miniporta não dá suporte à interface SR-IOV (virtualização de E/S de raiz única) ou não está habilitado para usar a interface .

NDIS_STATUS_INVALID_PARAMETER

Um ou mais dos membros da estrutura NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO têm valores inválidos.

NDIS_STATUS_INVALID_LENGTH

O buffer de informações era muito curto. O NDIS define os DADOS. SET_INFORMATION. Membro BytesNeeded na estrutura NDIS_OID_REQUEST para o tamanho da estrutura NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO .

NDIS_STATUS_FAILURE

A solicitação falhou por outros motivos.

Requisitos

Versão

Com suporte no NDIS 6.30 e posterior.

Cabeçalho

Ntddndis.h (inclua Ndis.h)

Confira também


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