美文网首页
DLL的入口函数

DLL的入口函数

作者: 7bfedbe4863a | 来源:发表于2018-01-04 23:41 被阅读0次

    一个DLL可以有一个入口点函数。

    -系统会在不同的时候调用这个入口点函数,这些调用是通知性的,通常被DLL用来执行一些与进程线程有关的初始化和清理工作。

    -如果DLL不需要这些通知,则可以不在源码中实现这个入口点函数。

    实现代码:

    BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
    {
        switch (ul_reason_for_call)
        {
        case DLL_PROCESS_ATTACH:
            //第一次将一个DLL映射到进程的地址空间中,之后再Loaibrary不再调用这个入口函数
            break;
        case DLL_THREAD_ATTACH:
            break;
            //进程创建一个线程时,DLL执行与线程相关的初始化
        case DLL_THREAD_DETACH:
            //ExitThread让线程终止
            break;
        case DLL_PROCESS_DETACH:
            //将一个DLL从进程的地址空间中撤销时调用。(即最后一次FreeLibrary或FreeLibraryAndExitThread)
            //调用的是FreeLibrary时,在DllMain处理完DLL_PROCESS_DETACH通知之前,线程不会从该调用中返回。
            //DLL可能会阻碍进程的终止。
            break;
        }
        return TRUE;
    }
    

    DLL的序列化调用

    相关文章

      网友评论

          本文标题:DLL的入口函数

          本文链接:https://www.haomeiwen.com/subject/qszdnxtx.html