循序渐进DLL编程(二)

  在循序渐进DLL编程(一)中学习了关于只是静态的lib的一些编写的方法,其实在DLL中介绍关于DLLMain函数,我们知道在windows程序加载dll程序的时候也是有入口的,就像加载C程序类似有main之类的入口,DLL没有提供Dllmain函数,应用程序也是能成功加载DLL文件,这是因为在windows找不到dllmain函数的时候,系统会从其他运行库中运行一个不做任何操作的DLLmain函数版本,这不代表DLL不需要DLLmain函数

在这里我们需要学习使用DLL的动态使用方法

BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
    printf("hModule.%p lpReserved.%p \n", hModule, lpReserved);

    switch (ul_reason_for_call)
    {
        case DLL_PROCESS_ATTACH:
            printf("Process attach. \n");
            break;

        case DLL_PROCESS_DETACH:
            printf("Process detach. \n");
            break;

        case DLL_THREAD_ATTACH:
            printf("Thread attach. \n");
            break;

        case DLL_THREAD_DETACH:
            printf("Thread detach. \n");
            break;
    }

    return (TRUE);
}

通过上面的代码可以看到在加载DLL的时候会我们自己写的DLLmain而不是使用系统调用的其他DLL

 

posted on 2013-01-27 15:54  AAAAAApple  阅读(226)  评论(0编辑  收藏  举报

导航