Condividi tramite


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 garanzie, esplicite o implicite, relativamente alle informazioni fornite qui.

Il EvtVmbChannelSuspend funzione di callback 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 funzioni di callback per le modifiche di stato, tra cui EvtVmbChannelSuspend, usando la funzione VMB_CHANNEL_STATE_CHANGE_CALLBACKS_INIT.

Se un canale in esecuzione viene sospeso tramite la funzione VmbChannelPause o chiusa tramite la funzione VmbChannelDisable o tramite l'endpoint opposto, la libreria client in modalità kernel (KMCL) chiama EvtVmbChannelSuspend. Questo callback garantisce che non più EvtVmbChannelProcessPacket callback siano in esecuzione o 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 il VmbPacketSend, VmbPacketSendWithExternalMdlo funzioni VmbPacketSendWithExternalPfns.

Una chiamata a VmbChannelPause in blocchi di canale attivi fino a quando non viene chiamato EvtVmbChannelSuspend e non esistono più pacchetti in ingresso in sospeso.
Una chiamata a VmbChannelDisable blocca fino a quando il canale non viene sospeso e chiuso.

Questa funzione garantisce il completamento delle transazioni in sospeso. Il client può 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.

Fabbisogno

Requisito Valore
piattaforma di destinazione Finestre
intestazione vmbuskernelmodeclientlibapi.h (include VmbusKernelModeClientLibApi.h)
IRQL PASSIVE_LEVEL

Vedere anche

EvtVmbChannelProcessPacket

VMB_CHANNEL_STATE_CHANGE_CALLBACKS_INIT

VmbChannelDisable

VmbChannelPause

VmbPacketSend

VmbPacketSendWithExternalMdl

VmbPacketSendWithExternalPfns