动态库中dllmain函数会收到4个消息通知,分别为
DLL_PROCESS_ATTACH
DLL_THREAD_ATTACH
DLL_THREAD_DETACH
DLL_PROCESS_DETACH
1.当进程中主线程启动的时候,加载的动态库会收到DLL_PROCESS_ATTACH消息,主线程退出时,收到DLL_PROCESS_DETACH
2.当动态库加载后,进程中每一个线程启动和关闭,都会收到DLL_THREAD_ATTACH和DLL_THREAD_DETACH消息,加载动态库的线程发出的消息可以收到
3.可以在动态库收到DLL_PROCESS_ATTACH消息是调用函数DisableThreadLibraryCalls(),来屏蔽线程启动导致的DLL_THREAD_ATTACH和DLL_THREAD_DETACH的消息
4.当进程中的线程是teminateThread或者程序主线程调用ExitProcess、exit结束的,也不会收到线程消息,但进程退出消息可以收到