在DllMain中,DLL_THREAD_DETACH是否可以在没有DLL_THREAD_ATTACH的情况下发生?

时间:2014-01-09 17:21:59

标签: windows dll

如果在我的DLL加载之前已经创建了线程。然后,线程退出我的DLL卸载之前。问题是:

我的DllMain将通过DLL_THREAD_DETACH通知或没有关于退出主题的通知?

感谢您提前。

2 个答案:

答案 0 :(得分:2)

您会收到通知。它在MSDN article中明确记录为DllMain:

  

在某些情况下,即使从未使用DLL_THREAD_ATTACH为该线程调用入口点函数,也会为终止线程调用入口点函数:

     
      
  • 线程是进程中的初始线程,因此系统使用DLL_PROCESS_ATTACH值调用入口点函数。
  •   
  • 当调用LoadLibrary函数时,线程已经在运行,因此系统从未调用它的入口点函数。
  •   

答案 1 :(得分:0)

不,如果此线程释放了库,则会通知线程。

BOOL WINAPI FreeLibrary(
 _In_ HMODULE hModule
);

检查this link