从DLL内部获取DLL名称

5

如果我有一个名为"foo.dll"的dll文件,而最终用户将其重命名为"bar.dll"。在调用LoadLibrary后,如何从我的dll内部获取名称"bar.dll"?

是使用GetModuleFileName(hModule, buffer);吗?

2个回答

8

是的,在DllMain中需要存储hModule。

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

4

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接