Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le client d’une application de canaux virtuels est une DLL chargée pendant l’initialisation des services Bureau à distance sur l’ordinateur client. La DLL doit être inscrite sur l’ordinateur client. Pour plus d’informations, consultez 'inscription du client de canal virtuel.
La DLL cliente doit exporter une fonction VirtualChannelEntry, que les services Bureau à distance appellent pendant l’initialisation. Le point d’entrée VirtualChannelEntry reçoit un pointeur vers une structure CHANNEL_ENTRY_POINTS. Cette structure contient des pointeurs vers les fonctions que la DLL client appelle pour accéder aux canaux virtuels.
Fonction | Description |
---|---|
VirtualChannelInit |
Inscrit les noms des canaux virtuels à utiliser par le client et fournit un VirtualChannelInitEvent fonction de rappel via laquelle les services Bureau à distance notifient le client sur les événements qui affectent la connexion du client. |
VirtualChannelOpen |
Ouvre la fin du client d’un canal virtuel spécifié et fournit un VirtualChannelOpenEvent fonction de rappel via laquelle les services Bureau à distance notifient le client sur les événements qui affectent le canal virtuel. |
virtualChannelWrite |
Écrit des données dans un canal virtuel. Les services Bureau à distance envoient ces données à la fin du serveur du canal virtuel. La fin du serveur appelle la fonction WTSVirtualChannelRead pour lire les données. |
VirtualChannelClose |
Ferme un canal virtuel. |
La fonctionvirtualChannelEntry de votre DLL doit appeler la fonction VirtualChannelInit pour initialiser l’accès aux canaux virtuels. Lorsque vous appelez VirtualChannelInit, vous devez passer un pointeur vers la fonction de rappel VirtualChannelInitEvent. Les services Bureau à distance appellent cette fonction de rappel lorsque l’initialisation est terminée et à nouveau lorsqu’une connexion a été établie avec un serveur hôte de session Bureau à distance (hôte de session Bureau à distance).
Une fois la connexion établie, vous pouvez appeler la fonction VirtualChannelOpen pour ouvrir les canaux virtuels inscrits par l’appel VirtualChannelInit. L’appel VirtualChannelOpen spécifie un pointeur vers votre fonction de rappel VirtualChannelOpenEvent.
Une fois l’appel VirtualChannelOpen retourné, vous pouvez appeler la fonction VirtualChannelWrite pour écrire dans le canal virtuel. L’opération d’écriture est asynchrone. Vous ne devez donc pas libérer ou réutiliser la mémoire tampon transmise à VirtualChannelWrite jusqu’à ce que les services Bureau à distance appellent votre fonction VirtualChannelOpenEvent pour indiquer que l’opération d’écriture a été terminée. Lorsque vous appelez VirtualChannelWrite, vous pouvez transmettre une partie des données utilisateur qui identifie l’opération d’écriture. Les services Bureau à distance transmettent ces données utilisateur lorsqu’il appelle VirtualChannelOpenEvent pour vous avertir que l’opération est terminée. À la fin du serveur du canal virtuel, le complément serveur appelle la fonction WTSVirtualChannelRead pour lire les données.
Les services Bureau à distance appellent également votre fonction VirtualChannelOpenEvent lorsque les données sont écrites dans le canal virtuel par le module serveur. Le module serveur appelle la fonction WTSVirtualChannelWrite pour écrire des données à la fin du canal virtuel.
Les modules client et serveur peuvent écrire des blocs de données de n’importe quelle taille sur le canal virtuel. Avant d’envoyer les données, toutefois, les services Bureau à distance segmentent les données en blocs de CHANNEL_CHUNK_LENGTH octets. Les services Bureau à distance appellent votre VirtualChannelOpenEvent fonction une fois pour chaque segment de données, plutôt que de reconstruire les données en bloc de la taille d’origine. Chaque appel à VirtualChannelOpenEvent indique la taille du bloc, la taille totale écrite par le serveur et si les données constituent le début, le milieu ou la fin d’un bloc écrit par le serveur.
Vous pouvez appeler la fonction VirtualChannelClose pour fermer un canal. Toutefois, il n’est pas nécessaire de l’appeler, car les services Bureau à distance ferment automatiquement tous les canaux lorsque le client se déconnecte du serveur.