Condividi tramite


DLL del client del canale virtuale

Il client di un'applicazione di canali virtuali è una DLL caricata durante l'inizializzazione di Servizi Desktop remoto nel computer client. La DLL deve essere registrata nel computer client. Per altre informazioni, vedere Registrazione client del canale virtuale.

La DLL client deve esportare una funzione VirtualChannelEntry, che Servizi Desktop remoto chiama durante l'inizializzazione. Il VirtualChannelEntry punto di ingresso riceve un puntatore a una struttura CHANNEL_ENTRY_POINTS. Questa struttura contiene puntatori alle funzioni chiamate dalla DLL client per accedere ai canali virtuali.

Funzione Descrizione
VirtualChannelInit
Registra i nomi dei canali virtuali da usare dal client e fornisce un VirtualChannelInitEvent funzione di callback tramite cui Servizi Desktop remoto notifica al client gli eventi che influiscono sulla connessione client.
VirtualChannelOpen
Apre la fine del client di un canale virtuale specificato e fornisce un VirtualChannelOpenEvent funzione di callback tramite cui Servizi Desktop remoto notifica al client gli eventi che influiscono sul canale virtuale.
VirtualChannelWrite
Scrive i dati in un canale virtuale. Servizi Desktop remoto invia questi dati alla fine del server del canale virtuale. L'entità finale del server chiama la funzioneWTSVirtualChannelReadper leggere i dati.
VirtualChannelClose
Chiude un canale virtuale.

La funzioneVirtualChannelEntry della DLL deve chiamare la funzioneVirtualChannelInitper inizializzare l'accesso ai canali virtuali. Quando si chiama VirtualChannelInit, è necessario passare un puntatore alla funzione di callbackVirtualChannelInitEvent. Servizi Desktop remoto chiama questa funzione di callback al termine dell'inizializzazione e di nuovo quando viene stabilita una connessione con un server Host sessione Desktop remoto (Host sessione Desktop remoto).

Dopo aver stabilito la connessione, è possibile chiamare la funzione VirtualChannelOpen per aprire i canali virtuali registrati dalla chiamata VirtualChannelInit. La chiamata VirtualChannelOpen specifica un puntatore alla funzione di callbackVirtualChannelOpenEvent.

Al termine della chiamataVirtualChannelOpen, è possibile chiamare la funzioneVirtualChannelWriteper scrivere nel canale virtuale. L'operazione di scrittura è asincrona, pertanto non è necessario liberare o riutilizzare il buffer passato a VirtualChannelWrite finché Servizi Desktop remoto non chiama la funzione VirtualChannelOpenEvent per indicare che l'operazione di scrittura è stata completata. Quando si chiama VirtualChannelWrite, è possibile passare una parte di dati utente che identifica l'operazione di scrittura. Servizi Desktop remoto passa nuovamente questi dati utente quando chiama VirtualChannelOpenEvent per notificare che l'operazione è stata completata. Al termine del server del canale virtuale, il componente aggiuntivo server chiama la funzione WTSVirtualChannelRead per leggere i dati.

Servizi Desktop remoto chiama anche la funzioneVirtualChannelOpenEventquando i dati vengono scritti nel canale virtuale dal modulo server. Il modulo server chiama la funzioneWTSVirtualChannelWriteper scrivere dati alla fine del server del canale virtuale.

I moduli client e server possono scrivere blocchi di dati di qualsiasi dimensione nel canale virtuale. Prima di inviare i dati, tuttavia, Servizi Desktop remoto segmenta i dati in blocchi di CHANNEL_CHUNK_LENGTH byte. Servizi Desktop remoto chiama la funzioneVirtualChannelOpenEventuna volta per ogni blocco di dati, invece di ricompilare i dati in un blocco delle dimensioni originali. Ogni chiamata a VirtualChannelOpenEvent indica le dimensioni del blocco, le dimensioni totali scritte dal server e se i dati costituiscono l'inizio, il centro o la fine di un blocco scritto dal server.

È possibile chiamare la funzioneVirtualChannelCloseper chiudere un canale. Tuttavia, non è necessario chiamarlo perché Servizi Desktop remoto chiude automaticamente tutti i canali quando il client si disconnette dal server.