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:
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.
No sistema operacional de gerenciamento, ocorrem as seguintes etapas:
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.
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.
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.
No sistema operacional convidado, ocorrem as seguintes etapas:
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 .
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.
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
NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO