라이프로그


HMODULE 과 HINSTANCE 의 차이점 Windows


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

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

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

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

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


핑백

  • NeverStop : GetModuleHandle과 LoadLibrary 2008-07-06 23:37:03 #

    ... ry(LPCTSTR lpLibFileName); 같은점 : LoadLibrary도 GetModuleHandle과 같은 기능(모듈에 대한 핸들을 리턴한다)을 한다. (HMODULE과 HINSTANCE의 차이점 참고) 차이점 : LoadLibrary의 경우 레퍼런스 카운트를 올리지만 GetModuleHandle의 경우 레퍼런스 카운트를 올리지 않는다. 따 ... more

  • 베이비들의 블로그 : GetModuleHandle과 LoadLibrary 2010-01-31 12:04:18 #

    ... )을 한다. (HMODULE과 HINSTANCE의 차이점&nbs ... more

덧글

  • lol 2012/01/30 21:12 # 삭제 답글

    모듈핸들과 인스턴스핸들을 혼용할수 잇는건가요?
댓글 입력 영역