2009-05-10 24 views
5

Mam aplikację myapp.exe systemu C++, która ładuje kilka wtyczek.Jak uzyskać nazwę pliku DLL?

Wtyczki muszą znaleźć ścieżkę do ich bibliotek DLL. Mogę użyć do tego funkcji GetModuleFileName, ale potrzebuję uchwytu dla biblioteki DLL wtyczki. Nie wiem, skąd wziąć ten uchwyt. GetModuleHandle (NULL) zwraca uchwyt do pliku wykonywalnego.

Jedną z opcji jest użycie GetModuleHandle (GetModuleHandle ("myplugin.dll")), ale wymaga to nazwy wtyczki, która będzie na stałe zakodowana, a której chcę uniknąć.

Każda pomoc jest doceniana.

Paul

Odpowiedz

10

nie wiem skąd wziąć ten uchwyt

Jest przekazywana jako parametr do Twojego DllMain() funkcji wejściowej.

Jeśli wtyczka nie może uzyskać dostępu do swojej funkcji wprowadzania DLLMain(), może użyć funkcji VirtualQuery w części własnej pamięci i użyć pola AllocationBase z wypełnionej struktury MEMORY_BASIC_INFORMATION jako swojego HMODULE.

+3

Doskonale dziękuję Chris. Tutaj funkcja używać: HINSTANCE GetMyModuleHandle() { MEMORY_BASIC_INFORMATION MBI; VirtualQuery (GetMyModuleHandle, & mbi, sizeof (mbi)); return (HINSTANCE) (mbi.AllocationBase); } –

Powiązane problemy