DLL 엔트리 포인트 함수 DllMain

3648 단어 운영 체제
각 DLL에는 다른 시간에 호출되는 엔트리 포인트 함수인 DllMain이 있습니다.다음은 DllMain의 일반적인 형식입니다.
BOOL WINAPI DllMain(
    HINSTANCE hinstDLL,  // handle to DLL module
    DWORD fdwReason,     // reason for calling function
    LPVOID lpReserved )  // reserved
{
    // Perform actions based on the reason for calling.
    switch( fdwReason ) 
    { 
        case DLL_PROCESS_ATTACH:
         // Initialize once for each new process.
         // Return FALSE to fail DLL load.
            break;

        case DLL_THREAD_ATTACH:
         // Do thread-specific initialization.
            break;

        case DLL_THREAD_DETACH:
         // Do thread-specific cleanup.
            break;

        case DLL_PROCESS_DETACH:
         // Perform any necessary cleanup.
            break;
    }
    return TRUE;  // Successful DLL_PROCESS_ATTACH.
}
      MSDN,     DllMain        。
1、 HINSTANCE hinstDLL
      DLL     ,    DLL          ,            。
2、 DWORD fdwReason
        DllMain     。    ,     case    。       ,    。
3、 LPVOID lpReserved 
         fdwReason     ,    ,                   DllMain。
1、DLL_PROCESS_ATTACH
         DLL           ,   DllMain,  fdwReason  DLL_PROCESS_ATTACH。
  ,           ,    。   ,           DLL,          DLL     ,       DLL_PROCESS_ATTACH   DllMain。
 DLL_PROCESS_ATTACH   ,   DLL    。
DllMain    ,    DLL_PROCESS_ATTACH   。         ,    。
      , DllMain  FALSE,        。      ,   LoadLibrary  NULL。
2、DLL_PROCESS_DETACH
      DLL             ,   DllMain  DLL_PROCESS_DETACH。               。
   FreeLibrary ,          0 ,        DLL_PROCESS_DETACH   DllMain。       0,         DLL   。
3、DLL_THREAD_ATTACH
         ,        <strong>   </strong>          DLL  ,  DLL_THREAD_ATTACH     DLL DllMain。
     DLL     DLL_THREAD_ATTACH    ,             。
  ,       DLL_THREAD_ATTACH   DllMain,                 , DLL_PROCESS_ATTACH  DllMain 。
4、DLL_THREAD_DETACH
      ,   ExitThread,             ,     DLL_THREAD_DETACH               DLL   DllMain.
   DLL DllMain     ,           。
     DllMain      
        ,A B。        ,       SomeDll.dll DLL。         CreateThread        ,C D。
   A  CreateThread     C   ,    DLL_THREAD_ATTACH   SomeDll.dll DllMain,   C         ,  B  CreateThread     D。
  ,      DLL_THREAD_ATTACH   SomeDll.dll DllMain,      D        。
    ,    DllMain     ,     D  ,    C   DllMain        。
 C     DllMain        ,      C     。  ,       D, D  DllMain    。    ,  D        。

좋은 웹페이지 즐겨찾기