EVT_VMB_CHANNEL_SUSPEND funzione di callback (vmbuskernelmodeclientlibapi.h)

[Alcune informazioni riguardano il prodotto non rilasciato che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non fornisce alcuna garanzia, espressa o implicita, in relazione alle informazioni fornite qui.

La funzione di callback EvtVmbChannelSuspend viene richiamata nell'endpoint server quando il canale viene chiuso o eliminato dall'endpoint client, che sposta il server nello stato Arrestato.

Sintassi

EVT_VMB_CHANNEL_SUSPEND EvtVmbChannelSuspend;

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

Parametri

[in] Channel

Canale sospeso.

Valore restituito

nessuno

Osservazioni

Dopo aver creato un canale, un driver client può specificare le funzioni di callback per le modifiche dello stato, incluso EvtVmbChannelSuspend, usando la funzione VMB_CHANNEL_STATE_CHANGE_CALLBACKS_INIT .

Se un canale in esecuzione viene sospeso tramite la funzione VmbChannelPause o chiuso tramite la funzione VmbChannelDisable o dall'endpoint opposto, la libreria client in modalità kernel chiama EvtVmbChannelSuspend. Questo callback garantisce che non siano in esecuzione altri callback EvtVmbChannelProcessPacket o che vengano accodati.

EvtVmbChannelSuspend è anche una notifica che il client KMCL deve completare tutti i pacchetti in sospeso indicati usando EvtVmbChannelProcessPacket Questi pacchetti non devono essere completati in modo sincrono. Blocchi KMCL fino a quando non sono stati completati.

Il client KMCL deve anche interrompere l'invio di pacchetti usando le funzioni VmbPacketSend, VmbPacketSendWithExternalMdl o VmbPacketSendWithExternalPfns .

Una chiamata a VmbChannelPause su un canale attivo si blocca fino a quando non viene chiamato EvtVmbChannelSuspend e non esistono altri pacchetti in ingresso in sospeso.
Una chiamata al blocco VmbChannelDisable fino a quando il canale non viene sospeso e chiuso.

Questa funzione garantisce il completamento delle transazioni in sospeso. Il client potrebbe essere buggy, dannoso o la macchina virtuale guest potrebbe essersi arrestata in modo anomalo. Il server deve ritirare tutte le transazioni in sospeso, probabilmente annullandole.

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione vmbuskernelmodeclientlibapi.h (include VmbusKernelModeClientLibApi.h)
IRQL PASSIVE_LEVEL

Vedi anche

EvtVmbChannelProcessPacket

VMB_CHANNEL_STATE_CHANGE_CALLBACKS_INIT

VmbChannelDisable

VmbChannelPause

VmbPacketSend

VmbPacketSendWithExternalMdl

VmbPacketSendWithExternalPfns