사용자 개체
사용자 인터페이스 개체는 개체당 하나의 핸들만 지원합니다. 프로세스는 사용자 개체에 대한 핸들을 상속하거나 복제할 수 없습니다. 한 세션의 프로세스는 다른 세션의 사용자 핸들을 참조할 수 없습니다.
이론적 제한은 세션당 65,536개의 사용자 핸들입니다. 그러나 세션당 열 수 있는 최대 사용자 핸들 수는 사용 가능한 메모리의 영향을 받으므로 일반적으로 더 낮습니다. 사용자 핸들의 기본 프로세스당 제한도 있습니다. 이 제한을 변경하려면 다음 레지스트리 값을 설정합니다.
Hkey_local_machine\소프트웨어\Microsoft\\ Windows NT CurrentVersion\Windows\USERProcessHandleQuota
이 값은 200에서 18,000 사이의 숫자로 설정할 수 있습니다.
사용자 개체에 대한 핸들
사용자 개체에 대한 핸들은 모든 프로세스에 대해 공개됩니다. 즉, 프로세스에 개체에 대한 보안 액세스 권한이 있는 경우 모든 프로세스에서 사용자 개체 핸들을 사용할 수 있습니다.
다음 그림에서 애플리케이션은 창 개체를 만듭니다. CreateWindow 함수는 창 개체를 만들고 개체 핸들을 반환합니다.
창 개체를 만든 후 애플리케이션은 창 핸들을 사용하여 창을 표시하거나 변경할 수 있습니다. 창 개체가 제거될 때까지 핸들은 유효한 상태로 유지됩니다.
다음 그림에서 애플리케이션은 창 개체를 삭제합니다. DestroyWindow 함수는 창 핸들을 무효화하는 메모리에서 창 개체를 제거합니다.
사용자 개체 관리
다음 표에서는 각 개체의 작성자 및 구축자 함수와 함께 사용자 개체를 나열합니다. 작성자 함수는 개체와 개체 핸들을 만들거나 기존 개체 핸들을 반환합니다. 구축자 함수는 개체 핸들을 무효화하는 메모리에서 개체를 제거합니다.
사용자 개체 | 작성자 함수 | Destroyer 함수 |
---|---|---|
액셀러레이터 테이블 | CreateAcceleratorTable | DestroyAcceleratorTable |
캐럿 | CreateCaret | DestroyCaret |
커서 | CreateCursor, LoadCursor, LoadImage | DestroyCursor |
DDE 대화 | DdeConnect, DdeConnectList | DdeDisconnect, DdeDisconnectList |
후크 | SetWindowsHookEx | UnhookWindowsHookEx |
아이콘 | CreateIconIndirect, LoadIcon, LoadImage | DestroyIcon |
메뉴 | CreateMenu, CreatePopupMenu, LoadMenu, LoadMenuIndirect | DestroyMenu |
시간 범위 | CreateWindow, CreateWindowEx, CreateDialogParam, CreateDialogIndirectParam, CreateMDIWindow | DestroyWindow |
창 위치 | BeginDeferWindowPos | EndDeferWindowPos |