<GetModuleHandle = LoadLibrary>
HMODULE GetModuleHandle ( LPCSTSTR lpModuleName );
HMODUEL LoadLibrary(LPCTSTR lpFileName);
GetModuleHandle은 그리 접할일이 많지 않은 함수이다. 우선 모듈이라는 말은
간 단히 함수들의 집합이다. 특정일을 처리한다는 객체의 개념으로 해석할 수도 있다. 다른 공학에서는 모듈이 있지만 역시 기능을 모아 놓았다는 비슷한 뜻이다. 함수들의 집합이라고 해도 아직 좀 막연한데 윈도우 내에서는 구체적인 예로 DLL이나 EXE 파일이 있다
MSDN 에 의하면 GetModuleHandlle은 모듈의엔트리 포인트를 넘겨주는 함수이다.
엔트리 포인트는 Base Adress이다 C 프로그램의 엔트리 포인트는 main 이요, 윈도우 프로그래밍의 엔트리 포인트는 WinMain 이 아닌가. 물론 관점에 따라 스타트업 코드를 엔트리 포인트라고 할수도 있다.
lpModuleName 에 dll 이나 exe 파일 이름을 넘겨주면 모듈에 대한 핸들 을 리턴하는 것이 아니라 실제 리턴값은 베이스 주소 값을 넘겨준다. 결국 GetModuleHandle 은 dll 과 exe 의 베이스 주소를 리턴하는 함수이다.
LoadLibrary 역시 같은 기능을 하지만 레퍼런스 카운팅 ( referencing counting ) 을 하느냐 안하냐의 차이점이 있다.
LoadLibrary 의 경우 레퍼런스 카운트를 올리지만 GetModuleHandle 은 올리지 않는다 그러므로
단순한 값만 참조할때는 GetModuleHandle 을 실제 지속적으로 사용하기 위해서는 LoadLibrary 를 사용한다.
<GetProcAddress>
FARPROC GetProcAddress(HMODULE hModule, LPCSTR lpProcName);
DLL에서 Export한 함수의 번지를 찾아서 그 함수를 사용할 수 있도록 그 함수의 포인터를 리턴해 주는 API
[출처 및 참고]
http://blog.naver.com/pwk0810?Redirect=Log&logNo=40131525623|작성자 분발하자
http://blog.naver.com/hsshee?Redirect=Log&logNo=70037637328
http://blog.naver.com/sorkelf?Redirect=Log&logNo=40133647878 GetmMoudleHandle 과 Loadlibrary GetprocAddress 사용법
http://blog.naver.com/shw20319?Redirect=Log&logNo=20138056582 어셈연산자
http://www.reversecore.com/54 실행파일이 커널에서 실행방법
http://marcof.tistory.com/22 윈도우 커널구조 그림
'[PROGRAMMING] > ▶Window System Programming' 카테고리의 다른 글
win32 base code 기본 코드 (0) | 2012.06.13 |
---|---|
Cmd 프로세스 리스트와 프로세스 종료 구현하기 (0) | 2011.12.08 |