Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Obiekty interfejsu użytkownika obsługują tylko jeden uchwyt na obiekt. Procesy nie mogą dziedziczyć ani duplikować dojść do obiektów użytkownika. Procesy w jednej sesji nie mogą odwoływać się do uchwytu użytkownika w innej sesji.
Istnieje teoretyczny limit 65 536 dojść użytkowników na sesję. Jednak maksymalna liczba dojść użytkowników, które można otworzyć na sesję, jest zwykle niższa, ponieważ ma to wpływ na dostępną pamięć. Istnieje również domyślny limit dojść użytkownika dla poszczególnych procesów. Aby zmienić ten limit, ustaw następującą wartość rejestru:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\USERProcessHandleQuota
Tę wartość można ustawić na liczbę z zakresu od 200 do 18 000.
Dojścia do obiektów użytkownika
Dojścia do obiektów użytkownika są publiczne dla wszystkich procesów. Oznacza to, że każdy proces może używać uchwytu obiektu użytkownika, pod warunkiem, że proces ma dostęp zabezpieczeń do obiektu.
Na poniższej ilustracji aplikacja tworzy obiekt okna. Funkcja CreateWindow tworzy obiekt okna i zwraca uchwyt obiektu.
Po utworzeniu obiektu okna aplikacja może użyć uchwytu okna, aby wyświetlić lub zmienić okno. Uchwyt pozostaje prawidłowy do momentu zniszczenia obiektu okna.
Na następnej ilustracji aplikacja niszczy obiekt okna. Funkcja DestroyWindow usuwa obiekt okna z pamięci, co powoduje unieważnienie uchwytu okna.
Zarządzanie obiektami użytkownika
W poniższej tabeli wymieniono obiekty użytkownika wraz z funkcjami twórcy i niszczyciela każdego obiektu. Twórca tworzy obiekt i uchwyt obiektu lub po prostu zwraca istniejący uchwyt obiektu. Funkcje niszczyciela usuwają obiekt z pamięci, co unieważnia uchwyt obiektu.
| Obiekt użytkownika | Creator, funkcja | Destroyer, funkcja |
|---|---|---|
| Tabela akceleratora | CreateAcceleratorTable | DestroyAcceleratorTable |
| Daszek | CreateCaret | DestroyCaret |
| Kursor | CreateCursor, LoadCursor, LoadImage | DestroyCursor |
| Konwersacja DDE | DdeConnect, DdeConnectList | DdeDisconnect DdeDisconnectList |
| Haczyk | SetWindowsHookEx | unhookWindowsHookEx |
| Ikona | CreateIconIndirect, LoadIcon, LoadImage | DestroyIcon |
| Menu | CreateMenu, CreatePopupMenu, LoadMenu, LoadMenuIndirect | DestroyMenu |
| Okno | CreateWindow, CreateWindowEx, CreateDialogParam, CreateDialogIndirectParam, CreateMDIWindow | DestroyWindow |
| Położenie okna | BeginDeferWindowPos | EndDeferWindowPos |