Partager via


EVT_VMB_CHANNEL_SUSPEND fonction de rappel (vmbuskernelmodeclientlibapi.h)

[Certaines informations portent sur la préversion du produit, qui est susceptible d’être en grande partie modifié avant sa commercialisation. Microsoft ne donne aucune garantie, expresse ou implicite, concernant les informations fournies ici.]

La fonction de rappel EvtVmbChannelSuspend est appelée au point de terminaison du serveur lorsque le canal est fermé ou supprimé par le point de terminaison client, ce qui place le serveur à l’état Arrêté.

Syntaxe

EVT_VMB_CHANNEL_SUSPEND EvtVmbChannelSuspend;

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

Paramètres

[in] Channel

Canal suspendu.

Valeur de retour

None

Remarques

Une fois qu’un canal est créé, un pilote client peut spécifier des fonctions de rappel pour les modifications d’état, y compris EvtVmbChannelSuspend, à l’aide de la fonction VMB_CHANNEL_STATE_CHANGE_CALLBACKS_INIT .

Si un canal en cours d’exécution est suspendu à l’aide de la fonction VmbChannelPause ou fermé à l’aide de la fonction VmbChannelDisable ou par le point de terminaison opposé, la bibliothèque de client en mode noyau (KMCL) appelle EvtVmbChannelSuspend. Ce rappel garantit qu’aucun rappel EvtVmbChannelProcessPacket n’est en cours d’exécution ou ne sera mis en file d’attente.

EvtVmbChannelSuspend est également une notification indiquant que le client KMCL doit terminer tous les paquets en attente indiqués à l’aide d’EvtVmbChannelProcessPacket Ces paquets n’ont pas besoin d’être terminés de manière synchrone. KmCL se bloque jusqu’à ce qu’ils soient terminés.

Le client KMCL doit également arrêter d’envoyer des paquets à l’aide des fonctions VmbPacketSend, VmbPacketSendWithExternalMdl ou VmbPacketSendWithExternalPfns .

Un appel à VmbChannelPause sur un canal actif se bloque jusqu’à ce que EvtVmbChannelSuspend soit appelé et qu’il n’existe plus de paquets entrants en attente.
Un appel au bloc VmbChannelDisable jusqu’à ce que le canal soit suspendu et fermé.

Cette fonction garantit l’achèvement des transactions en attente. Le client peut être buggy, malveillant ou la machine virtuelle invitée peut s’être bloquée. Le serveur doit mettre hors service toutes les transactions en suspens, probablement en les annulant.

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête vmbuskernelmodeclientlibapi.h (incluez VmbusKernelModeClientLibApi.h)
IRQL PASSIVE_LEVEL

Voir aussi

EvtVmbChannelProcessPacket

VMB_CHANNEL_STATE_CHANGE_CALLBACKS_INIT

VmbChannelDisable

VmbChannelPause

VmbPacketSend

VmbPacketSendWithExternalMdl

VmbPacketSendWithExternalPfns