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.
System Windows ma wiele przestrzeni nazw dla następujących nazwanych obiektów jądra: zdarzenia, semafory, mutexes, czasomierze oczekiwania, obiekty mapowania plików, obiekty zadań i obiekty linków symbolicznych. Istnieje globalna przestrzeń nazw używana głównie przez usługi w aplikacjach klienta/serwera. Ponadto każda sesja ma oddzielną przestrzeń nazw dla tych obiektów.
Oddzielne przestrzenie nazw sesji umożliwiają wielu klientom uruchamianie tych samych aplikacji bez zakłócania między sobą. W przypadku procesów uruchamianych w ramach sesji klienta system domyślnie używa przestrzeni nazw sesji klienta. Jednak te procesy mogą używać globalnej przestrzeni nazw, poprzedzając prefiks "Global\" nazwą obiektu. Na przykład następujący kod wywołuje CreateEvent i tworzy obiekt zdarzenia o nazwie CSAPP w globalnej przestrzeni nazw:
CreateEventW( NULL, FALSE, FALSE, L"Global\\CSAPP" );
Aplikacje usług domyślnie używają globalnej przestrzeni nazw.
Nuta
Globalna przestrzeń nazw nie jest dostępna dla aplikacji ze Sklepu Windows.
Zero sesji jest używane tylko do hostowania usług i nie ma sesji konsoli, w przeciwieństwie do wersji systemu Windows wcześniejszych niż Windows Vista.
Globalna przestrzeń nazw umożliwia procesom w wielu sesjach klienta komunikowanie się z aplikacją usługi. Na przykład aplikacja kliencka/serwerowa może używać obiektu mutex do synchronizacji. Moduł serwera może utworzyć obiekt mutex w globalnej przestrzeni nazw. Następnie sesja klienta może użyć prefiksu "Global\", aby otworzyć obiekt mutex.
Innym zastosowaniem globalnej przestrzeni nazw jest użycie aplikacji, które używają nazwanych obiektów do wykrywania, że istnieje już wystąpienie aplikacji uruchomionej w systemie we wszystkich sesjach. Ten nazwany obiekt musi zostać utworzony lub otwarty w globalnej przestrzeni nazw zamiast przestrzeni nazw dla sesji. Bardziej typowy przypadek uruchamiania aplikacji raz na sesję jest obsługiwany domyślnie, ponieważ nazwany obiekt jest tworzony w przestrzeni nazw sesji.
Oprócz prefiksu "Global\" procesy klienckie mogą używać prefiksu "Local\", aby jawnie utworzyć obiekt w przestrzeni nazw sesji. Te słowa kluczowe są wrażliwe na wielkość liter.
Prefiks "Session\" jest zarezerwowany do użytku systemu i nie należy go używać w nazwach obiektów jądra.
Szybkie przełączanie użytkowników jest implementowane przy użyciu sesji. Pierwszy użytkownik, który loguje się, używa sesji pierwszej, następnego użytkownika, który loguje się, używa sesji drugiej itd. Nazwy obiektów jądra muszą być zgodne z wytycznymi opisanymi dla usług pulpitu zdalnego, aby aplikacje mogły obsługiwać wielu użytkowników.
Tworzenie obiektu mapowania plików lub obiektu łącza symbolicznego w globalnej przestrzeni nazw, na przykład przy użyciu CreateFileMapping, z sesji innej niż zero sesji jest operacją uprzywilejowaną. W związku z tym aplikacja musi mieć włączoną SeCreateGlobalPrivilege w celu utworzenia obiektu mapowania plików lub obiektu łącza symbolicznego w globalnej przestrzeni nazw. Kontrola uprawnień jest ograniczona do tworzenia tych obiektów i nie ma zastosowania do otwierania istniejących. Na przykład jeśli usługa lub system tworzy obiekt mapowania plików w globalnej przestrzeni nazw, każdy proces uruchomiony w dowolnej sesji może uzyskać dostęp do tego obiektu mapowania plików, pod warunkiem, że proces ma niezbędny dostęp.