Partager via


CHANNEL_OPEN_EVENT_FN fonction de rappel (cchannel.h)

Fonction de rappel définie par l’application que les services Bureau à distance appellent pour informer la DLL cliente des événements pour un canal virtuel spécifique.

Le type PCHANNEL_OPEN_EVENT_FN définit un pointeur vers cette fonction de rappel. VirtualChannelOpenEvent est un espace réservé pour le nom de fonction défini par l’application ou défini par la bibliothèque.

Syntaxe

CHANNEL_OPEN_EVENT_FN ChannelOpenEventFn;

VOID VCAPITYPE ChannelOpenEventFn(
  [in] DWORD openHandle,
  [in] UINT event,
  [in] LPVOID pData,
  [in] UINT32 dataLength,
  [in] UINT32 totalLength,
  [in] UINT32 dataFlags
)
{...}

Paramètres

[in] openHandle

Gérez vers le canal virtuel. Il s’agit du handle retourné dans le paramètre pOpenHandle de la fonction VirtualChannelOpen .

[in] event

Indique l’événement qui a provoqué la notification. Ce paramètre peut prendre les valeurs suivantes.

CHANNEL_EVENT_DATA_RECEIVED

Le canal virtuel a reçu des données de l’extrémité du serveur. pData est un pointeur vers un segment de données. dataLength indique la taille de ce segment. totalLength indique la taille totale des données écrites par le serveur.

CHANNEL_EVENT_WRITE_CANCELLED

Une opération d’écriture démarrée par un appel VirtualChannelWrite a été annulée. pData est la valeur spécifiée dans le paramètre pUserData de VirtualChannelWrite.

Une opération d’écriture est annulée lorsque la session cliente est déconnectée. Cette notification vous permet de libérer toute mémoire associée à l’opération d’écriture.

CHANNEL_EVENT_WRITE_COMPLETE

Une opération d’écriture démarrée par un appel VirtualChannelWrite a été effectuée. pData est la valeur spécifiée dans le paramètre pUserData de VirtualChannelWrite.

[in] pData

Pointeur vers des données supplémentaires pour l’événement. Le type de données dépend de l’événement, comme décrit précédemment dans les descriptions des événements.

Si l’événement est CHANNEL_EVENT_DATA_RECEIVED, les données écrites par le serveur sont divisées en blocs d’au plus CHANNEL_CHUNK_LENGTH octets. Le paramètre dataFlags indique si le bloc actuel se trouve au début, au milieu ou à la fin du bloc de données écrit par le serveur.

Notez que la taille de ce paramètre peut être supérieure à la valeur spécifiée par le paramètre dataLength . L’application doit lire uniquement le nombre d’octets spécifié par dataLength.

[in] dataLength

Spécifie la taille, en octets, des données dans la mémoire tampon pData .

[in] totalLength

Spécifie la taille totale, en octets, des données écrites par une seule opération d’écriture sur l’extrémité du serveur du canal virtuel.

[in] dataFlags

Fournit des informations sur le bloc de données reçu dans un événement CHANNEL_EVENT_DATA_RECEIVED . Les indicateurs de bits suivants seront définis.

Notez que vous ne devez pas effectuer de comparaisons directes à l’aide de l’opérateur '==' lors de la comparaison des valeurs de la liste suivante . utilisez plutôt les méthodes de comparaison décrites.

CHANNEL_FLAG_FIRST

Le bloc est le début des données écrites par une seule opération d’écriture.

Utilisez des comparaisons au niveau du bit lors de la comparaison de cet indicateur.

CHANNEL_FLAG_LAST

Le bloc est la fin des données écrites par une seule opération d’écriture.

Utilisez des comparaisons au niveau du bit lors de la comparaison de cet indicateur.

CHANNEL_FLAG_MIDDLE

Il s’agit de la valeur par défaut. Le bloc se trouve au milieu d’un bloc de données écrit par une seule opération d’écriture.

N’utilisez pas de comparaisons au niveau du bit pour comparer directement cette valeur d’indicateur. Utilisez plutôt des comparaisons au niveau du bit pour déterminer que la valeur de l’indicateur n’est pas CHANNEL_FLAG_FIRST ou CHANNEL_FLAG_LAST. Pour ce faire, utilisez la comparaison suivante : Result = !(flags & CHANNEL_FLAG_FIRST) && !(flags & CHANNEL_FLAG_LAST).

CHANNEL_FLAG_ONLY

Combine les valeurs CHANNEL_FLAG_FIRST et CHANNEL_FLAG_LAST . Le bloc contient toutes les données d’une seule opération d’écriture.

Utilisez des comparaisons au niveau du bit lors de la comparaison de cet indicateur.

Valeur retournée

Cette fonction n’a aucune valeur de retour.

Remarques

La DLL cliente utilise la fonction VirtualChannelOpen pour inscrire une fonction VirtualChannelOpenEvent pour un canal virtuel spécifique.

Vous pouvez utiliser la même fonction VirtualChannelOpenEvent pour plusieurs appels à VirtualChannelOpen.

Cette fonction peut être appelée avec un autre type d’événement pendant son exécution. Par exemple, il peut être appelé avec CHANNEL_EVENT_WRITE_COMPLETE ou CHANNEL_EVENT_WRITE_CANCELLED pendant le traitement de l’événement CHANNEL_EVENT_DATA_RECEIVED . Notez que cette fonction ne sera pas appelée avec le même type d’événement qu’elle traite actuellement.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Serveur minimal pris en charge Windows Server 2008
Plateforme cible Windows
En-tête cchannel.h

Voir aussi

VirtualChannelOpen