다음을 통해 공유


사용자 개체

사용자 인터페이스 개체는 개체당 하나의 핸들만 지원합니다. 프로세스는 사용자 개체에 대한 핸들을 상속하거나 복제할 수 없습니다. 한 세션의 프로세스는 다른 세션의 사용자 핸들을 참조할 수 없습니다.

이론적 제한은 세션당 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