Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Klient-/serverprogram får inte förutsätta att en enda datoranslutning motsvarar en enskild användarsession. Detta är ett särskilt fall av problemet som beskrivs i IP-adresser och datornamn.
För att unikt identifiera en klient-/serveranslutning måste varje klientmodul använda ett unikt namn eller en unik identifierare. Program kan använda namngivna objekt eller rör, socketar eller andra IPC-metoder. Mer information finns i Kernel Object Namespaces.
För att vara fjärrskrivbordstjänster kompatibla måste servermodulen i ett klient-/serverprogram kunna hantera flera klienter som ansluter från samma dator. För att åstadkomma detta måste servermodulen acceptera klientanslutningar via ett väldefinierat globalt gränssnitt, till exempel RPC eller namngivna pipes. Servern och klienten måste förhandla fram en annan kommunikationskanal för varje användarsession. Klienten måste upprätta en anslutning till servern med hjälp av protokoll som enkelt stöder den här typen av åtgärder, till exempel TCP/IP, där en annan socketanslutning kan användas för varje klientprogram.
Klientmodulen kan anropa funktionen ProcessIdToSessionId för att hämta identifieraren för dess Fjärrskrivbordstjänster-session. Klienten använder sedan någon form av kommunikation mellan processer för att skicka sessionsidentifieraren till servermodulen. Klient- och servermodulerna kan sedan använda sessionsidentifieraren för att konfigurera en privat kommunikationskanal. Servermodulen kan till exempel använda en sessionsidentifierare för att komma åt objekt i sessionens namnområde för kernelobjekt.
Dessutom kan servermodulen använda sessionsidentifieraren i ett WTSQuerySessionInformation-anrop för att hämta ytterligare information om klienten. Servermodulen kan också använda sessionsidentifieraren i ett WTSSendMessage--anrop för att visa ett meddelande i klientterminalen. Servermodulen kan också skapa två händelser för att övervaka klientanslutning till och frånkoppling från en session. Den måste dock vara registrerad på servern värd för fjärrskrivbordssession för att kunna göra detta. Mer information finns i Övervakning av sessionsanslutningar och frånkopplingar.
Uppmaningar om användarindata är en potentiell källa till problem för klient-/serverprogram. Om en tjänst till exempel anropar funktionen MessageBox visas meddelanderutan på skrivbordet på värdservern för fjärrskrivbordssessionen, inte på klientskrivbordet. Om du vill visa ett meddelande på ett klientskrivbord kan tjänsten anropa funktionen WtsSendMessage. Alternativt kan tjänsten begära indata från klientmodulen, och klientmodulen kan visa användargränssnittet och skicka de resulterande indata tillbaka till tjänsten.
Processer som skapas från flera sessioner kan skicka data till och ta emot data från varandra med hjälp av delade minnesblock. Mer information finns i Skapa namngivet delat minne. Delat minne kan inte användas under följande villkor:
- Processerna med hjälp av det delade minnesblocket skapades av flera sessioner.
- Sessionerna delar samma användarautentiseringsautentiseringsautentiseringsuppgift.