DLL程序入口点函数:DllMain,注意:大小写是区别的(仅导出资源的DLL可以没有DllMain函数)。

函数原型:

BOOL APIENTRY DllMain( HMODULE hModule,DWORD  ul_reason_for_call,LPVOID lpReserved)
{return TRUE;
}

参数意义:

①hModule参数:指向DLL本身的实例句柄;


②ul_reason_for_call参数:指明了DLL被调用的原因,可以有以下4个取值:


1. DLL_PROCESS_ATTACH:
当DLL被进程 <<第一次>> 调用时,导致DllMain函数被调用,

同时ul_reason_for_call的值为DLL_PROCESS_ATTACH,

如果同一个进程后来再次调用此DLL时,操作系统只会增加DLL的使用次数,

不会再用DLL_PROCESS_ATTACH调用DLL的DllMain函数。


2.DLL_PROCESS_DETACH:
当DLL被从进程的地址空间解除映射时,系统调用了它的DllMain,传递的ul_reason_for_call值是DLL_PROCESS_DETACH。
★如果进程的终结是因为调用了TerminateProcess,系统就不会用DLL_PROCESS_DETACH来调用DLL的DllMain函数。这就意味着DLL在进程结束前没有机会执行任何清理工作。


3.DLL_THREAD_ATTACH:
当进程创建一线程时,系统查看当前映射到进程地址空间中的所有DLL文件映像,

并用值DLL_THREAD_ATTACH调用DLL的DllMain函数。 

新创建的线程负责执行这次的DLL的DllMain函数,

只有当所有的DLL都处理完这一通知后,系统才允许线程开始执行它的线程函数。


4.DLL_THREAD_DETACH:
如果线程调用了ExitThread来结束线程(线程函数返回时,系统也会自动调用ExitThread),

系统查看当前映射到进程空间中的所有DLL文件映像,

并用DLL_THREAD_DETACH来调用DllMain函数,

通知所有的DLL去执行线程级的清理工作。
★注意:如果线程的结束是因为系统中的一个线程调用了TerminateThread,

系统就不会用值DLL_THREAD_DETACH来调用所有DLL的DllMain函数。


③lpReserved参数:保留,目前没什么意义。

转载于:https://www.cnblogs.com/friendan/archive/2012/06/13/2838070.html

Dll入口函数参数详解...相关推荐

  1. Dll入口函数参数详解

    DLL程序入口点函数:DllMain,注意:大小写是区别的(仅导出资源的DLL可以没有DllMain函数). 函数原型: BOOL APIENTRY DllMain( HMODULE hModule, ...

  2. PHP date函数参数详解

    PHP date函数参数详解 作者: 字体:[增加 减小] 类型:转载 time()在PHP中是得到一个数字,这个数字表示从1970-01-01到现在共走了多少秒,很奇怪吧  不过这样方便计算, 要找 ...

  3. java调用js匿名函数参数,js匿名函数作为函数参数详解

    由衷的感叹,js真是烦. 学到现在,渐渐理解了什么是:语言都是通用的,没有好不好,只有擅长不擅长. 继承,多态,甚至指针,c能实现,c++,java有,javascript(和java是雷锋和雷峰塔的 ...

  4. matlab melbankm,Matlab v_melbankm函数参数详解(英文附例)

    Matlab v_melbankm函数参数详解(英文附例) 笔者使用的是R2019的matlab,下载了voicebox安装至matlab路径下即可使用.下载voicebox请参看此博客 需要注意的是 ...

  5. ioctl 函数 参数 详解

    2019独角兽企业重金招聘Python工程师标准>>> ioctl 函数 参数 详解 2009-04-24 11:55 ioctl函数 本函数影响由fd参数引用的一个打开的文件. # ...

  6. 定义一个没有参数的函数、输出python3次_Python函数参数详解,三天让你掌握python,不再是小白

    原标题:Python函数参数详解,三天让你掌握python,不再是小白 引言 随着程序功能的增多,代码量随之增大,此时仍不加区分地把所有功能的实现代码放到一起,将会使得程序的组织结构不清晰,可读性变差 ...

  7. Matlab mfcc函数参数详解(英文附例)

    Matlab mfcc函数参数详解 其实可以直接打开源代码看哈. %MFCC Extract the mfcc, log-energy, delta, and delta-delta of audio ...

  8. python传入参数加星号_Python 带星号(* 或 **)的函数参数详解

    1. 带默认值的参数 在了解带星号(*)的参数之前,先看下带有默认值的参数,函数定义如下: >> def defaultValueArgs(common, defaultStr = &qu ...

  9. Matlab v_melcepst函数参数详解(英文附例)

    Matlab v_melcepst函数参数详解(英文附例) 笔者使用的是R2019的matlab,下载了voicebox安装至matlab路径下即可使用.下载voicebox请参看此博客 需要注意的是 ...

  10. python中def func是什么意思_Python的函数参数详解

    原标题:Python的函数参数详解 前言 Python中函数的参数可以分为两大类形参和实参~ def func(x, y): # x, y 就是形参 print(x, y) func(2, 3) # ...

最新文章

  1. py2 HTMLTestRunner报告
  2. ASP.NET Core Web 应用程序开发期间部署到IIS自定义主机域名并附加到进程调试
  3. java filter 模式,Java设计模式----过滤器模式(挑三拣四)
  4. java单车吧_暑假一个月,撸个共享单车后台
  5. java sound 多线程同一音频文件_Java在编程语言中占据何等优势?
  6. 10.8.8.8柠檬wifi网页登录_基于企业邮箱进行wifi实名认证的方案
  7. Java编程思想—第三四五六七章
  8. el如何获取复选框的值_element ui 表格提交时获取所有选中的checkbox的数据
  9. CR(code review)常见问题
  10. 【汇编语言与计算机系统结构笔记11】程序格式与伪操作:段定义、堆栈 #简洁笔记形式
  11. redis能模糊删除key吗_redis 模糊匹配和批量删除
  12. 开课吧课堂之何时调用构造函数
  13. PO、VO、BO、DTO、POJO、DAO之间的关系
  14. Java反射机制的大厂面试题
  15. 高仿大漠找字FindStr
  16. 【Matlab】除法取整函数用法
  17. 适合初学者的PASCAL VOC2012数据集的下载及简单讲解
  18. 三通短信每月发送量导入Sqlserver随笔
  19. 22_多点电容触摸屏驱动
  20. Python-元祖-字典

热门文章

  1. OSI常用网络协议(七层)
  2. 原创|批处理实现安卓设备自动重启压力测试(自动生成日志和计算重启时间)
  3. idea打包jar 有的依赖包没有被打包
  4. C语言经典题目50题
  5. shell脚本文件使用教程
  6. 经验模态分解(EMD)
  7. Jmeter使用CSV文件读取大量测试数据
  8. ubuntu18.04安装nvidia驱动(戴尔G15_3060版本)
  9. 前端常用布局大全——细致讲解
  10. Java 获取本机IP地址的实例代码