Dela via


DLL för virtual channel-klient

Klienten för ett program för virtuella kanaler är en DLL som läses in under initieringen av Fjärrskrivbordstjänster på klientdatorn. DLL-filen måste vara registrerad på klientdatorn. Mer information finns i Virtual Channel-klientregistrering.

Klientens DLL måste exportera en VirtualChannelEntry- funktion som Fjärrskrivbordstjänster anropar under initieringen. Startpunkten VirtualChannelEntry tar emot en pekare till en CHANNEL_ENTRY_POINTS struktur. Den här strukturen innehåller pekare till de funktioner som klientens DLL anropar för att få åtkomst till virtuella kanaler.

Funktion Beskrivning
VirtualChannelInit
Registrerar namnen på de virtuella kanaler som ska användas av klienten och tillhandahåller en VirtualChannelInitEvent- återanropsfunktion genom vilken Fjärrskrivbordstjänster meddelar klienten om händelser som påverkar klientanslutningen.
VirtualChannelOpen
Öppnar klientslutet för en angiven virtuell kanal och tillhandahåller en VirtualChannelOpenEvent- återanropsfunktion genom vilken Fjärrskrivbordstjänster meddelar klienten om händelser som påverkar den virtuella kanalen.
VirtualChannelWrite
Skriver data till en virtuell kanal. Fjärrskrivbordstjänster skickar dessa data till serverdelen av den virtuella kanalen. Serverdelen anropar funktionen WTSVirtualChannelRead för att läsa data.
VirtualChannelClose
Stänger en virtuell kanal.

DLL-funktionen VirtualChannelEntry måste anropa funktionen VirtualChannelInit för att initiera åtkomst till virtuella kanaler. När du anropar VirtualChannelInitmåste du skicka en pekare till funktionen VirtualChannelInitEvent motringning. Fjärrskrivbordstjänster anropar den här återanropsfunktionen när initieringen är klar och igen när en anslutning har upprättats med en värd för fjärrskrivbordssession (värd för fjärrskrivbordssession).

När anslutningen har upprättats kan du anropa funktionen VirtualChannelOpen för att öppna de virtuella kanaler som registrerats av anropet VirtualChannelInit. Anropet VirtualChannelOpen anger en pekare till din VirtualChannelOpenEvent återanropsfunktion.

När VirtualChannelOpen-anropet returneras kan du anropa funktionen VirtualChannelWrite för att skriva till den virtuella kanalen. Skrivåtgärden är asynkron, så du får inte frigöra eller återanvända bufferten som skickas till VirtualChannelWrite tills Fjärrskrivbordstjänster anropar funktionen VirtualChannelOpenEvent för att indikera att skrivåtgärden har slutförts. När du anropar VirtualChannelWritekan du skicka en del användardata som identifierar skrivåtgärden. Fjärrskrivbordstjänster skickar tillbaka dessa användardata när de anropar VirtualChannelOpenEvent för att meddela dig om att åtgärden har slutförts. I serverdelen av den virtuella kanalen anropar servertillägget funktionen WTSVirtualChannelRead för att läsa data.

Fjärrskrivbordstjänster anropar även funktionen VirtualChannelOpenEvent när data skrivs till den virtuella kanalen av servermodulen. Servermodulen anropar funktionen WTSVirtualChannelWrite för att skriva data till serverdelen av den virtuella kanalen.

Klient- och servermodulerna kan skriva datablock av valfri storlek till den virtuella kanalen. Innan data skickas segmentar dock Fjärrskrivbordstjänster data i segment av CHANNEL_CHUNK_LENGTH byte. Fjärrskrivbordstjänster anropar din VirtualChannelOpenEvent funktion en gång för varje datasegment, i stället för att återskapa data till ett block av den ursprungliga storleken. Varje anrop till VirtualChannelOpenEvent- anger storleken på segmentet, den totala storleken som skrivits av servern och om data utgör början, mitten eller slutet av ett block som skrivits av servern.

Du kan anropa funktionen VirtualChannelClose för att stänga en kanal. Det är dock inte nödvändigt att anropa det eftersom Fjärrskrivbordstjänster stänger alla kanaler automatiskt när klienten kopplas från servern.