http://dstein.egloos.com/1907162


HMODULE 과 HINSTANCE는 16비트 윈도우에서온 잔재이다.
우선 16비트 윈도우 환경에서  HMODULE 과 HINSTANCE 를 간략히 정의하면 다음과 같다.

1. HMODULE
   코드 영역에 대한 핸들

2. HINSTANCE
    데이터 영역에 대한 핸들

16비트 윈도우는 시스템 전체가 단일 메모리 공간을 사용하였다. 이때는 동일 프로세스가 여러번 실행될 경우 메모리 절약을 위해 코드영역은 한번만 로드하고 데이터영역은 각 프로세스별로 할당하였다. 각 프로세스별로 할당한 영역을 가리키는 핸들이 인스턴스핸들이다. 그래서 16비트 윈도우 환경에서는 인스턴스 핸들에 의해서 프로그램이 식별된다.

32비트 윈도우는 프로세스별로 메모리 공간이 독립적이기때문에 코드영역과 데이터영역 모두가 독립된 프로세스 메모리에 할당되므로 인스턴스 핸들과 모듈 핸들의 구분이 의미가 없어졌다. 그래서 32비트 윈도우에서는 모듈 핸들과 인스턴스 핸들이 같은 의미로 사용된다.
32비트 윈도우에서 인스턴스 핸들은 메모리 공간에 할당된 실행 모듈의 베이스주소(0x00400000)를 가리킨다.

+ Recent posts