動態庫中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結束的,也不會收到線程消息,但進程退出消息可以收到