한 걸음씩..

[MFC] 윈도우 핸들 정리 본문

프로그래밍

[MFC] 윈도우 핸들 정리

반엘 2013. 10. 1. 09:30

핸들이란 구체적인 어떤 대상에 붙여진 번호이며 문법적으로는 32비트(또는 64비트)의 정수값이다.

핸들은 중복되지 않아야 하므로 운영체제가 발급하고 사용자는 사용하기만 할 수 있다.



       HANDLE hProcess


HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, NULL, GetCurrentProcessId());


프로세스 생성 시 OS 내부적으로 커널 오브젝트를 생성하며 그 프로세스에 대한 정보를 채워지게 된다.

일반적으로 커널 오브젝트에 접근은 불가능 하지만 위 사용법을 통해 커널 오브젝트의 번호(핸들)을 가져와서 접근할 수 있다


       HINSTANCE hInstance


int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow )


인스턴스 핸들은 프로그램 코드를 담고있는 모듈에 대한 핸들이다.

시스템이 프로세스의 메모리 주소 공간 상에 실행파일을 로드 할 때 시작 메모리 주소를 가리킨다.


       HWND hWnd


구성 요소 별로 분리하여 각 윈도우는 자기 자신이 맡은 부분에 대한 화면 출력과 사용자 입력만을 담당한다.

따라서 대상 영역을 구분하기 위한 핸들이 필요하다.


편의에 따라 HANDLE, HINSTANCE, HWND라고 명시되어 있지만 결국 원형은 void * 형 변수