DLL du client du canal virtuel

Le client d’une application de canaux virtuels est une DLL qui est chargée pendant l’initialisation Services Bureau à distance sur l’ordinateur client. La DLL doit être inscrite sur l’ordinateur client. Pour plus d’informations, consultez inscription du client du canal virtuel.

La DLL cliente doit exporter une fonction VirtualChannelEntry , qui services Bureau à distance des appels pendant l’initialisation. Le point d’entrée VirtualChannelEntry reçoit un pointeur vers une structure de points d' _ entrée _ de canal . 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 une fonction de rappel VirtualChannelInitEvent par le biais de laquelle services Bureau à distance notifie au client les événements qui affectent la connexion cliente.
VirtualChannelOpen
Ouvre l’extrémité client d’un canal virtuel spécifié et fournit une fonction de rappel VirtualChannelOpenEvent par le biais de laquelle services Bureau à distance notifie au client les événements qui affectent le canal virtuel.
VirtualChannelWrite
Écrit des données dans un canal virtuel. Services Bureau à distance envoie ces données à l’extrémité serveur du canal virtuel. Le serveur end appelle la fonction WTSVirtualChannelRead pour lire les données.
VirtualChannelClose
Ferme un canal virtuel.

La fonction VirtualChannelEntry de votre dll doit appeler la fonction VirtualChannelInit pour initialiser l’accès aux canaux virtuels. Quand vous appelez VirtualChannelInit, vous devez passer un pointeur vers la fonction de rappel VirtualChannelInitEvent . Services Bureau à distance appelle cette fonction de rappel lorsque l’initialisation est terminée et de nouveau quand une connexion a été établie avec un serveur d’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 enregistrés par l’appel VirtualChannelInit . L’appel VirtualChannelOpen spécifie un pointeur vers votre fonction de rappel VirtualChannelOpenEvent .

Après le retour de l’appel VirtualChannelOpen , vous pouvez appeler la fonction VirtualChannelWrite pour écrire dans le canal virtuel. L’opération d’écriture étant asynchrone, vous ne devez pas libérer ou réutiliser la mémoire tampon transmise à VirtualChannelWrite tant que services Bureau à distance n’a pas appelé votre fonction VirtualChannelOpenEvent pour indiquer que l’opération d’écriture est terminée. Quand vous appelez VirtualChannelWrite, vous pouvez passer un élément de données utilisateur qui identifie l’opération d’écriture. Services Bureau à distance transmet à nouveau ces données utilisateur lorsqu’il appelle VirtualChannelOpenEvent pour vous avertir que l’opération est terminée. À l’extrémité serveur du canal virtuel, le complément serveur appelle la fonction WTSVirtualChannelRead pour lire les données.

Services Bureau à distance appelle également votre fonction VirtualChannelOpenEvent lorsque des données sont écrites sur le canal virtuel par le module de serveur. Le module serveur appelle la fonction WTSVirtualChannelWrite pour écrire des données à l’extrémité serveur du canal virtuel.

Les modules client et serveur peuvent écrire des blocs de données de n’importe quelle taille sur le canal virtuel. Toutefois, avant d’envoyer les données, Services Bureau à distance segmente les données en segments d' _ octets de longueur de segment de canal _ . Services Bureau à distance appelle votre fonction VirtualChannelOpenEvent une fois pour chaque segment de données, plutôt que de recréer les données dans un bloc de la taille d’origine. Chaque appel à VirtualChannelOpenEvent indique la taille du segment, la taille totale écrite par le serveur et indique 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 Services Bureau à distance ferme automatiquement tous les canaux lorsque le client se déconnecte du serveur.