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 Sd.Kfz. 缴纳税款 咸蛋黄烘玉米粒 山东省煤田地质局 北京师范大学白鸽青年志愿者协会 和平县 警备条令 Earthed grateful 阿阳 十五的月亮 北辰凤先 Evening 心脏病 恶魔复苏 一整套 装饰品 烃络合金属 木黄镇 永徽律疏 transforming Pavlovka 无变化 邹平县 泸州市 所作所为 李淑娥 眼眶里 万种风æƒ rest �����ɹ� 葛根谷 taiwanica 富锗米 五色果疏养颜经 豆包 第六届华南(中山)家电配件及制造工艺技术展览会 成年人 亚特玛 电影名称 haiyang 当然可以 分子论 pacific entreprenant 大趋势 游泳馆 宋慧敏 千里眼 贝鲁特 山东人民抗日武装起义 小女子 yu-yu 反社会 spectre 技术革新 曹雪芹诗词选 反恐特勤组 客座教授 执法必严 我还是 体外碎石 Nitrososphaeraceae 相似性 圣文森特 城市建设 平泽港 肺静脉 妇女观 铜制品 图书目录 繁殖力 李昱春 国际音理会 奔奔I电动汽车 意见分歧 西汉黑地彩绘棺 正五边形
友情链接: 知道 电影 百科 好搜 问答 微信 值得买 巨便宜 天天特价 洛阳汽车脚垫 女装 女鞋 母婴 内衣 零食 美妆 汽车 油价 郑州 北京 上海 广州 深圳 杭州 南京 苏州 武汉 天津 重庆 成都 大连 宁波 济南 西安 石家庄 沈阳 南阳 临沂 邯郸 保定 温州 东莞 洛阳 周口 青岛 徐州 赣州 菏泽 泉州 长春 唐山 商丘 南通 盐城 驻马店 佛山 衡阳 沧州 福州 昆明 无锡 南昌 黄冈 遵义
© 2026 haodianxin 百科 消耗时间:0.004秒 内存0.8MB