Dll入口函数参数详解
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个取值:
- 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参数:保留,目前没什么意义。
Dll入口函数参数详解相关推荐
- PHP date函数参数详解
PHP date函数参数详解 作者: 字体:[增加 减小] 类型:转载 time()在PHP中是得到一个数字,这个数字表示从1970-01-01到现在共走了多少秒,很奇怪吧 不过这样方便计算, 要找 ...
- java调用js匿名函数参数,js匿名函数作为函数参数详解
由衷的感叹,js真是烦. 学到现在,渐渐理解了什么是:语言都是通用的,没有好不好,只有擅长不擅长. 继承,多态,甚至指针,c能实现,c++,java有,javascript(和java是雷锋和雷峰塔的 ...
- matlab melbankm,Matlab v_melbankm函数参数详解(英文附例)
Matlab v_melbankm函数参数详解(英文附例) 笔者使用的是R2019的matlab,下载了voicebox安装至matlab路径下即可使用.下载voicebox请参看此博客 需要注意的是 ...
- ioctl 函数 参数 详解
2019独角兽企业重金招聘Python工程师标准>>> ioctl 函数 参数 详解 2009-04-24 11:55 ioctl函数 本函数影响由fd参数引用的一个打开的文件. # ...
- 定义一个没有参数的函数、输出python3次_Python函数参数详解,三天让你掌握python,不再是小白
原标题:Python函数参数详解,三天让你掌握python,不再是小白 引言 随着程序功能的增多,代码量随之增大,此时仍不加区分地把所有功能的实现代码放到一起,将会使得程序的组织结构不清晰,可读性变差 ...
- Matlab mfcc函数参数详解(英文附例)
Matlab mfcc函数参数详解 其实可以直接打开源代码看哈. %MFCC Extract the mfcc, log-energy, delta, and delta-delta of audio ...
- python传入参数加星号_Python 带星号(* 或 **)的函数参数详解
1. 带默认值的参数 在了解带星号(*)的参数之前,先看下带有默认值的参数,函数定义如下: >> def defaultValueArgs(common, defaultStr = &qu ...
- Matlab v_melcepst函数参数详解(英文附例)
Matlab v_melcepst函数参数详解(英文附例) 笔者使用的是R2019的matlab,下载了voicebox安装至matlab路径下即可使用.下载voicebox请参看此博客 需要注意的是 ...
- python中def func是什么意思_Python的函数参数详解
原标题:Python的函数参数详解 前言 Python中函数的参数可以分为两大类形参和实参~ def func(x, y): # x, y 就是形参 print(x, y) func(2, 3) # ...
最新文章
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之登录窗口调试...
- 案例开发分析 || ​​​​​​​Scheduler组件
- 云计算炒作多过采纳 普及仍需时日
- java 安卓界面 可视化_Monkey可视化工具开发(android篇)
- angular4输入有效性_Angular 2 用户输入
- vba 判断是否为数字
- linux socket recv函数如何判断收完一包_linux服务器端编程之高性能服务器架构设计总结...
- [水池] 灌水专用:搜狗输入法里收集的纯文字表情
- Linux文本三剑客超详细教程---grep、sed、awk
- IT要发掘有价值应用
- 通过ICE轻松部署WES7镜像
- 扫地机器人半湿拖布_自己洗拖布的云鲸扫拖机器人,让“懒人”离彻底解放双手又近一步...
- 蓝桥杯Python题目(二)
- word批量转PDF
- Sky Walking 介绍 及 8.7.0 源码学习环境搭建
- 排序算法--鸽巢排序(PigeonholeSort)的原理、排序思路、适用场景及代码示例
- IOS免签支持在线封装app分发源码 免签封装带绿标
- CUDA的Occupancy和Achieved Occupancy概念
- mybatis like的两种写法
- Mysql、Oracle、DM、Tbase数据库差异性
热门文章
- 实现输入一个字符串,分别将大写字母、小写字母、数字、其他字符存到列表里面并且输出列表
- java redis 没密码配置_如何解决redis的NOAUTH Authentication required异常
- C语言学习之试编程从键盘输入2*3的二维数组,将该数组行列交换输出。
- 计算机技术是双证,计算机技术在职研究生单证可以转双证吗
- 2012届华为校园招聘机试题
- 2006年清华大学计算机研究生机试真题
- const_cast的应用
- Linux:hping高级主机扫描
- (转)c#中const与readonly区别
- mysql数据库的系统操作基本操作