Windows Handle
핸들은 Windows에서 리소스를 식별하고 접근하기 위해 사용하는 임의의 정수 값으로, 사용자가 실제 커널 리소스에 직접 접근하지 못하도록 제어하고 보호하는 역할입니다.
핸들의 값은 중복하여 사용될 수 있으나, 특정 프로세스에 종속된 값이기 때문에 번호가 같다 하더라도 다른 프로세스에서는 유효하지 않습니다.
OS에서는 각 객체의 유형, 메모리 주소, 핸들 번호 등을 매핑하여 관리하는 핸들 테이블이 존재하기 때문에 사용자가 핸들을 통해 객체에 접근하면 OS는 테이블을 확인하여 해당 핸들과 프로세스에 맞는 메모리 주소에 가서 명령을 실행합니다.

사용자가 메모장을 열어서 읽는 과정을 다이어그램으로 나타내면 다음과 같습니다.
대표적으로 많이 사용되는 핸들은 다음과 같습니다.
Windows Handle
HWND
애플리케이션 생성
FindWindow(), GetForegroundWindow(), ShowWindow()
Process Handle
HANDLE
프로세스 실행
OpenProcess(), GetCurrentProcess(), TerminateProcess()
Thread Handle
HANDLE
프로세스 내 쓰레드
OpenThread(), CreateThread(), SuspendThread()
File Handle
HANDLE
파일 실행
CreateFile(), ReadFile() WriteFile()
Registry Handle
HKEY
레지스트리 키
RegOpenKeyEx(), RegQueryValueEx(), RegSetValueEx()
Event Handle
HANDLE
이벤트 동기화
CreateEvent(), SetEvent(), ResetEvent()
Mutex Handle
HANDLE
상호 배제 대상
CreateMutex(), ReleaseMutex()
References
Last updated