在DllMain的DLL_PROCESS_ATTACH中创建了线程  
如何在加载我的进程退出之前安全的退出该线程? 注:被加载的dll不是通过FreeLibrary卸载,而是随进程的结束而被卸载(进程中没有调用FreeLibrary)。

解决方案 »

  1.   

    根据 Jeffrey Richter的说法,不能再DLL_PROCESS_DETACH收到的时候终止线程,因为其他系统的dll也受到了这个通知,并且完成了清除工作,所以调用许多系统函数的时候会失败,可能包括TerminateThread,ExitThread;
       Jerrrey Richter建议挂接ExitProcess函数,通过挂接ExitProcess函数,确保ExitProcess函数被调用时,先进入你自己的my_exitprocess函数,在这个函数内进行终止线程(TerminateThread,ExitThread),然后再调用系统的ExitProcess   
       终止线程有很多方法,最好是让线程函数自己返回。迫不得已才用TerminateThread,ExitThread
      

  2.   

    谢谢 anjuta_c,
    我先研究研究挂接ExitProcess,
      

  3.   

    《windows核心编程>>里边有示例代码,虽说不简单,但是也不难,你看一下:)