Windows Handle

핸들은 Windows에서 리소스를 식별하고 접근하기 위해 사용하는 임의의 정수 값으로, 사용자가 실제 커널 리소스에 직접 접근하지 못하도록 제어하고 보호하는 역할입니다.

핸들의 값은 중복하여 사용될 수 있으나, 특정 프로세스에 종속된 값이기 때문에 번호가 같다 하더라도 다른 프로세스에서는 유효하지 않습니다.

OS에서는 각 객체의 유형, 메모리 주소, 핸들 번호 등을 매핑하여 관리하는 핸들 테이블이 존재하기 때문에 사용자가 핸들을 통해 객체에 접근하면 OS는 테이블을 확인하여 해당 핸들과 프로세스에 맞는 메모리 주소에 가서 명령을 실행합니다.

사용자가 메모장을 열어서 읽는 과정을 다이어그램으로 나타내면 다음과 같습니다.

대표적으로 많이 사용되는 핸들은 다음과 같습니다.

handle type
data type
repressents
used with

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