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 |