The DllMain function is an optional method of entry into a dynamic-link library (DLL)。(简要翻译:对于动态链接库,DllMain是一个可选的入口函数。)这句话很重要,很多初学者可能都认为一个动态链接库肯定要有DllMain函数。其实不然,像很多仅仅包含资源信息的DLL是没有DllMain函数的。

函数定义:

系统是在什么时候调用DllMain函数的呢?静态链接时,或动态链接时调用LoadLibrary和FreeLibrary都会调用DllMain函数。DllMain的第二个参数fdwReason指明了系统调用Dll的原因,它可能是::

DLL_PROCESS_ATTACH、

DLL_PROCESS_DETACH、

DLL_THREAD_ATTACH、

DLL_THREAD_DETACH。

以下从这四种情况来分析系统何时调用了DllMain。

DLL_PROCESS_ATTACH

大家都知道,一个程序要调用Dll里的函数,首先要先把DLL文件映射到进程的地址空间。要把一个DLL文件映射到进程的地址空间,有两种方法:静态链接和动态链接的LoadLibrary或者LoadLibraryEx。

当一个DLL文件被映射到进程的地址空间时,系统调用该DLL的DllMain函数,传递的fdwReason参数为DLL_PROCESS_ATTACH,这种调用只会发生在第一次映射时。如果同一个进程后来为已经映射进来的DLL再次调用LoadLibrary或者LoadLibraryEx,操作系统只会增加DLL的使用次数,它不会再用DLL_PROCESS_ATTACH调用DLL的DllMain函数。不同进程用LoadLibrary同一个DLL时,每个进程的第一次映射都会用DLL_PROCESS_ATTACH调用DLL的DllMain函数。

相关查询: DllMain function optional dynamic-link library 这句话 初学者 其实不然
最新查询:Augustana 黑龙江大学新闻传播学院 不服输 缺席者 有价证券 南通市商务局 音韵学 cron 丰县财政局 fervour 建筑物 Thaumantis Marseillaise 法制办 水石缘 江西万通汽修学院 中篇小说 什地镇 侦听员 大众传媒 郎德上寨 食品店 琳达·麦卡特尼 thread-1136-1-1.html 幸运之神 Richardson 这一下 臭皮匠 畅行无阻 文学类 è†æ£˜èŠ±ä¼ Militarism 布哈拉 吸收光谱 阿拉伯国家 pomegranate 爆炸案 IABP 3G概念车 全球富裕指数 解百纳 铁板花菜 排骨煲鱼面筋 爱憎分明 lightly 蜜炙芝麻核桃 魔间神探 哈德逊河 二百五 李道五 大雄兔 蝙蝠侠之阿甘疯人院 航空学 完完全全 军阀主义 立毛肌 凯文拉姆 悲伤的情歌 消费者协会 狮子头 分崩离析 尧舜村 垂涎三尺 太史公 主导产业 量身定做 布莱克维尔社会理论家指南 松溪县 无名群体 马连道中里二区 cici 花拆 Story-Based EMAOS-L granulate Scallion Trouble playing DllMain
友情链接: 知道 电影 百科 好搜 问答 微信 值得买 巨便宜 天天特价 洛阳汽车脚垫 女装 女鞋 母婴 内衣 零食 美妆 汽车 油价 郑州 北京 上海 广州 深圳 杭州 南京 苏州 武汉 天津 重庆 成都 大连 宁波 济南 西安 石家庄 沈阳 南阳 临沂 邯郸 保定 温州 东莞 洛阳 周口 青岛 徐州 赣州 菏泽 泉州 长春 唐山 商丘 南通 盐城 驻马店 佛山 衡阳 沧州 福州 昆明 无锡 南昌 黄冈 遵义
© 2026 haodianxin 百科 豫ICP备14030218号-3 消耗时间:0.013秒 内存0.85MB