Получение имени DLL из dll - PullRequest
5 голосов
/ 17 мая 2009

Если у меня есть dll с именем "foo.dll" и конечный пользователь переименует ее в "bar.dll". После вызова LoadLibrary, как я могу получить имя "bar.dll" внутри моей DLL?

Это GetModuleFileName (hModule, буфер);

Ответы [ 2 ]

7 голосов
/ 17 мая 2009

да, вам нужно хранить hModule в DllMain

BOOL WINAPI DllMain(HINSTANCE hinstDLL,  DWORD fdwReason,  LPVOID lpvReserved)
{
  switch (fdwReason)
  {
    case DLL_PROCESS_ATTACH:
      hModule = hinstDLL;
      break;
  }
}
4 голосов
/ 17 мая 2009

Вам необходимо предоставить функцию DllMain , сохранить дескриптор модуля, который вы получили, в статической переменной, а затем использовать эту переменную для вызова GetModuleFilename . Вы должны избегать вызова GetModuleFilename (или любой другой функции) в самом DllMain, поскольку Windows очень требовательна к тому, что вы можете и не можете делать там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...