본문 바로가기

Programming/Windows&C#

[Windows/WinAPI] LoadLibrary, GetProcAddress, FreeLibrary

728x90
반응형
HMODULE WINAPI LoadLibrary(
  _In_  LPCTSTR lpFileName                   ------①
);


함수 설명 : 

필요한 DLL을 프로세스 가상 메모리에 매핑하는 기능을 제공한다. 그리고 GetProceAddress 함수를 통해서 필요한 함수 포인터를 획득할 수 있다. 함수 성공시 DLL 모듈 핸들을 반환한다.


① lpFileName : 

프로세스 주소 공간으로 매필시킬 DLL이름을 지정한다. 절대경로로 지정하여도 되고 그렇지 않다면 표준 검색 경로를 기준으로 지정된 이름의 파일을 찾는다.


※ 표준 검색 경로 순서

1. 실행파일이 존재하는 디렉터리

2. 프로세스의 현재 디렉터리

3. Windows 시스템 디렉터리

4. Windows 디렉터리

5. PATH 환경변수에 등록되어 있는 모든 디렉터리





FARPROC WINAPI GetProcAddress(
  _In_  HMODULE hModule,            -----①
  _In_  LPCSTR lpProcName           -----②
);


함수 설명 :

DLL에서 함수 포인터를 얻어온다. 성공시 lpProcName과 같은이름의 함수 포인터를 반환한다. 실패시 NULL값을 반환한다. 


① hModule :

LoadLibrary함수를 통해 얻은 핸들이다. 사용하고자 하는 함수가 정의되있는 DLL모듈의 핸들을 지정 해주어야한다.


② lpProcName :

찾고자 하는 함수의 이름을 지정한다.





BOOL WINAPI FreeLibrary(
  _In_  HMODULE hModule                      -----①
);



함수 설명 : 

DLL 모듈 핸들을 인자를 반납한다. 성공시 0이 아닌 값을 리턴한다.


① hModule :

LoadLibrary 함수를 통해 매필된 DLL모듈을 인자로 넘겨준다. 꼭 종료 시켜 주어야 한다.



반응형