【问题标题】:Getting the name of a DLL from within the dll从 dll 中获取 DLL 的名称
【发布时间】:2009-05-17 11:31:48
【问题描述】:

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

是GetModuleFileName(hModule, buffer); ?

【问题讨论】:

    标签: c++ c windows


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2019-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多