Compartilhar via


EVT_VMB_CHANNEL_SUSPEND função de retorno de chamada (vmbuskernelmodeclientlibapi.h)

[Algumas informações relacionam-se ao produto de pré-lançamento, o qual poderá ser substancialmente modificado antes do lançamento comercial. A Microsoft não fornece nenhuma garantia, expressa ou implícita, com relação às informações fornecidas aqui.]

A função de retorno de chamada EvtVmbChannelSuspend é invocada no ponto de extremidade do servidor quando o canal está sendo fechado ou excluído pelo ponto de extremidade do cliente, o que move o servidor para o estado Parado.

Sintaxe

EVT_VMB_CHANNEL_SUSPEND EvtVmbChannelSuspend;

void EvtVmbChannelSuspend(
  [in] VMBCHANNEL Channel
)
{...}

Parâmetros

[in] Channel

O canal que está suspenso.

Retornar valor

Nenhum

Comentários

Depois que um canal é criado, um driver de cliente pode especificar funções de retorno de chamada para alterações de estado, incluindo EvtVmbChannelSuspend, usando a função VMB_CHANNEL_STATE_CHANGE_CALLBACKS_INIT .

Se um canal em execução for suspenso usando a função VmbChannelPause ou fechado usando a função VmbChannelDisable ou pelo ponto de extremidade oposto, a KMCL (Biblioteca de Clientes do Modo Kernel) chamará EvtVmbChannelSuspend. Esse retorno de chamada garante que não haja mais retornos de chamada EvtVmbChannelProcessPacket em execução ou serão enfileirados.

EvtVmbChannelSuspend também é uma notificação de que o cliente KMCL deve eventualmente concluir todos os pacotes pendentes indicados usando EvtVmbChannelProcessPacket Esses pacotes não precisam ser concluídos de forma síncrona. KMCL bloqueia até que eles tenham sido concluídos.

O cliente KMCL também deve parar de enviar pacotes usando as funções VmbPacketSend, VmbPacketSendWithExternalMdl ou VmbPacketSendWithExternalPfns .

Uma chamada para VmbChannelPause em um canal ativo é bloqueada até que EvtVmbChannelSuspend seja chamado e não exista mais pacotes de entrada pendentes.
Uma chamada para o bloco VmbChannelDisable até que o canal seja pausado e fechado.

Essa função garante a conclusão de transações pendentes. O cliente pode estar com bugs, mal-intencionados ou a máquina virtual convidada pode ter falhado. O servidor deve desativar todas as transações pendentes, provavelmente cancelando-as.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho vmbuskernelmodeclientlibapi.h (inclua VmbusKernelModeClientLibApi.h)
IRQL PASSIVE_LEVEL

Confira também

EvtVmbChannelProcessPacket

VMB_CHANNEL_STATE_CHANGE_CALLBACKS_INIT

VmbChannelDisable

VmbChannelPause

VmbPacketSend

VmbPacketSendWithExternalMdl

VmbPacketSendWithExternalPfns