2009-05-10 16 views
5

몇 가지 플러그인을로드하는 C++ Windows 응용 프로그램 myapp.exe가 있습니다.DLL의 파일 이름을 얻는 방법은 무엇입니까?

플러그인은 DLL 경로를 찾아야합니다. 이 경우 GetModuleFileName을 사용할 수 있지만 플러그인 DLL의 핸들이 필요합니다. 나는이 핸들을 어디에서 얻을지 모른다. GetModuleHandle (NULL)은 실행 파일의 핸들을 반환합니다.

하나의 옵션은 GetModuleHandle (GetModuleHandle ("myplugin.dll"))을 사용하는 것입니다. 그러나이 경우 피할 수있는 하드 코딩 된 플러그인 이름이 필요합니다.

도움을 주시면 감사하겠습니다.

바울은

답변

10

나는 그것은 당신의 DLLMain() 항목 함수에 매개 변수로 전달 된 것

이 처리 구할 수있는 곳 모른다.

플러그인이 DLLMain() 입력 함수에 액세스 할 수없는 경우 자체 메모리의 VirtualQuery 함수를 사용하고 채워진 MEMORY_BASIC_INFORMATION 구조체의 AllocationBase 필드를 HMODULE로 사용할 수 있습니다.

+3

크리스 감사합니다. 다음은 내가 사용하는 기능입니다. HINSTANCE GetMyModuleHandle() { MEMORY_BASIC_INFORMATION mbi; VirtualQuery (GetMyModuleHandle, & mbi, sizeof (mbi)); return (HINSTANCE) (mbi.AllocationBase); } –

관련 문제