zoukankan      html  css  js  c++  java
  • 循序渐进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

  • 相关阅读:
    <剑指OFFER18> 18_01_DeleteNodeInList在O(1)时间删除链表结点
    哈夫曼树

    快速排序
    冒泡算法
    Java 缓存机制
    JAVA NIO
    string、stringbuilder、stringbuffer区别
    Java内存泄露的问题调查定位
    使用hibernate 框架搭建的helloworld
  • 原文地址:https://www.cnblogs.com/OneDream/p/2878860.html
Copyright © 2011-2022 走看看