从dll中获取DLL的名称

时间:2009-05-17 11:31:48

标签: c++ c windows

如果我有一个名为“foo.dll”的dll,最终用户将其重命名为“bar.dll”。在调用LoadLibrary之后,如何从我的dll中获取名称“bar.dll”?

是GetModuleFileName(hModule,buffer); ?

2 个答案:

答案 0 :(得分:7)

是的,您需要将hModule存储在DllMain

BOOL WINAPI DllMain(HINSTANCE hinstDLL,  DWORD fdwReason,  LPVOID lpvReserved)
{
  switch (fdwReason)
  {
    case DLL_PROCESS_ATTACH:
      hModule = hinstDLL;
      break;
  }
}

答案 1 :(得分:4)

您需要提供DllMain函数,存储您在静态变量中传递的模块句柄,然后使用该变量调用GetModuleFilename。你应该避免在DllMain本身中调用GetModuleFilename(或任何其他函数),因为Windows非常挑剔你在那里可以做什么和不能做什么。