Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aplikacje klienckie/serwerowe nie mogą zakładać, że jedno połączenie komputera jest równoważne jednej sesji użytkownika. Jest to szczególny przypadek problemu omówionego w adresy IP i nazwy komputerów.
Aby jednoznacznie zidentyfikować połączenie klienta/serwera, każdy moduł klienta musi używać unikatowej nazwy lub identyfikatora. Aplikacje mogą używać nazwanych obiektów lub potoków, gniazd lub innych metod IPC. Aby uzyskać więcej informacji, zobacz Przestrzenie nazw obiektów jądra.
Aby być zgodnym z usługami pulpitu zdalnego, moduł serwera w aplikacji klienta/serwera musi być w stanie obsługiwać wielu klientów łączących się z tym samym komputerem. Aby to osiągnąć, moduł serwera musi akceptować połączenia klientów za pośrednictwem dobrze zdefiniowanego interfejsu globalnego, takiego jak RPC lub nazwane potoki. Serwer i klient muszą negocjować inny kanał komunikacyjny dla każdej sesji użytkownika. Klient musi nawiązać połączenie z serwerem przy użyciu protokołów, które łatwo obsługują ten typ operacji, takich jak TCP/IP, gdzie można użyć innego połączenia gniazda dla każdej aplikacji klienckiej.
Moduł klienta może wywołać funkcję ProcessIdToSessionId w celu pobrania identyfikatora sesji usług pulpitu zdalnego. Następnie klient używa jakiejś formy komunikacji międzyprocesowej, aby przekazać identyfikator sesji do modułu serwera. Moduły klienta i serwera mogą następnie użyć identyfikatora sesji do skonfigurowania prywatnego kanału komunikacyjnego. Na przykład moduł serwera może użyć identyfikatora sesji, aby uzyskać dostęp do obiektów w przestrzeni nazw sesji dla obiektów jądra.
Ponadto moduł serwera może użyć identyfikatora sesji w WTSQuerySessionInformation wywołanie w celu pobrania dodatkowych informacji o kliencie. Moduł serwera może również użyć identyfikatora sesji w WTSSendMessage wywołanie, aby wyświetlić komunikat w terminalu klienta. Moduł serwera może również utworzyć dwa zdarzenia, aby monitorować połączenie klienta z sesją i rozłączać się z nimi. W tym celu należy go jednak zarejestrować na serwerze hosta sesji usług pulpitu zdalnego (hosta sesji usług pulpitu zdalnego). Aby uzyskać więcej informacji, zobacz Monitorowanie połączeń sesji i rozłączeń.
Monity dotyczące danych wejściowych użytkownika są potencjalnym źródłem problemów dla aplikacji klienckich/serwerowych. Jeśli na przykład usługa wywołuje funkcję MessageBox, na pulpicie serwera hosta sesji usług pulpitu zdalnego jest wyświetlane pole komunikatu, a nie na pulpicie klienta. Aby wyświetlić komunikat na pulpicie klienta, usługa może wywołać funkcję WtsSendMessage. Alternatywnie usługa może zażądać danych wejściowych z modułu klienta, a moduł klienta może wyświetlić interfejs użytkownika i wysłać wynikowe dane wejściowe z powrotem do usługi.
Procesy zduplikowane z wielu sesji mogą wysyłać dane do siebie i odbierać dane za pośrednictwem bloków pamięci udostępnionej. Aby uzyskać więcej informacji, zobacz Tworzenie nazwanej pamięci udostępnionej. Pamięci udostępnionej nie można używać w następujących warunkach:
- Procesy korzystające z bloku pamięci udostępnionej zostały zduplikowane przez wiele sesji.
- Sesje współużytkuje te same poświadczenia uwierzytelniania użytkownika.