FN_VMB_CHANNEL_PACKET_GET_EXTERNAL_DATA função de retorno de chamada (vmbuskernelmodeclientlibapi.h)
[Algumas informações referem-se ao produto pré-lançado que pode ser substancialmente modificado antes de ser lançado comercialmente. A Microsoft não faz garantias, expressas ou implícitas, em relação às informações fornecidas aqui.]
A função VmbChannelPacketGetExternalData obtém quaisquer MDLs (Listas de Descritores de Memória) externas associadas a um pacote durante o processamento de pacotes.
Sintaxe
FN_VMB_CHANNEL_PACKET_GET_EXTERNAL_DATA FnVmbChannelPacketGetExternalData;
NTSTATUS FnVmbChannelPacketGetExternalData(
VMBPACKETCOMPLETION PacketCompletionContext,
UINT32 Flags,
PMDL *Mdl
)
{...}
Parâmetros
PacketCompletionContext
Um identificador que identifica o pacote de entrada e é usado para se referir ao pacote depois que o processamento é concluído.
Flags
Sinalizadores que controlam como o MDL é mapeado. Os valores de sinalizador possíveis são:
Valor | Significado |
---|---|
|
Mapeie o MDL como somente leitura. |
Mdl
Um ponteiro para o MDL mapeado.
Valor de retorno
VmbChannelPacketGetExternalData retorna um código de status. Se essa função retornar STATUS_PENDING, o chamador deverá retornar do retorno de chamada de processamento de pacote, que será chamado novamente, possivelmente em um IRQL diferente, quando os dados externos estiverem prontos. Neste ponto, uma chamada para essa função terá êxito e retornará os dados externos.
Observações
A criação de um MDL que representa a memória descrita por essa transação faz com que essas regiões da máquina virtual sejam fixadas na memória pelo restante do tempo de vida da transação. Isso pode fazer com que a função retorne STATUS_PENDING, pois as regiões da máquina virtual podem precisar ser paginada.
O MDL retornado por essa função descreve a memória que já está bloqueada no local. Portanto, não é necessário chamar a função MmProbeAndLockPages. No entanto, o MDL não terá um endereço virtual no modo de usuário nem um endereço virtual no modo kernel. Se o driver que chama essa função exigir um endereço virtual para manipular a memória dentro da máquina virtual, esse driver deverá chamar MmMapLockedPagesSpecifyCacheou MmGetSystemAddressForMdlSafee a função de desbloqueio correspondente posteriormente, como MmUnmapLockedPages. Uma alternativa ao uso de um endereço virtual seria apenas passar o MDL para baixo para um driver que o usa para acesso direto à memória.
O driver que chama essa função não é necessário para liberar o MDL. Torna-se inválido ao chamar a função VmbChannelPacketComplete. A KMCL (Biblioteca de Clientes do Modo Kernel) a libera posteriormente.
Importante
Essa função é chamada por meio da interface KMCL (Biblioteca de Clientes do Modo Kernel do VMBus), fornecida pelo driver de barramento Vmbkmcl.sys. Essa é uma função cliente acessada da estrutura de KMCL_CLIENT_INTERFACE_V1.
Para obter mais informações, consulte a seção Comentários do KMCL_CLIENT_INTERFACE_V1.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 10, versão 1803 |
cabeçalho | vmbuskernelmodeclientlibapi.h |