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 这句话 初学者 其实不然
最新查询:事关全局 民族革命 南屯煤矿 电力学 可扩展 财政资金 东平湖管理局 政治关系 崇拜者 可延长 觥筹交错 植树造林 一九九五年 置若罔闻 丽攀昭铁路 不可胜数 感知觉 Production %E5%8F%A3%E9%A6%99%E7%B3%96%E7%94%B5%E6%B1%A0 张希良 战士竞技场 那方面 寻衅滋事 里肌肉 铜版画 丙烯酸 校企通 保守性 香格里拉 无疾而终 Nutri-Gel 高山流水 Comolink 青铜奇葩错金银云纹铜犀尊 结拜兄弟 望奎县 宝剑定五龙 开尔文 石化工业 小檗碱 磺化反应 氢氧化铈 叶培元 含糖度 幸福地村 六义 宋郭熙关山春雪图 朱载坮 春谷 王和镇 南洋珠 产业资本 禽畜产品 五台山佛光寺大殿 安溪县 金融统计分析报告 glycoprotein 天鹅湖 哈雷 农民阶级 新中国 caledonia 世俗文化 葱烧海参鲍鱼 每平方米 区政府 贩卖人口 依附于 同步卫星 补给基地 潼南县 和平共处 Webster pockets distribution Poclain Geiger-Marsden drafted effects. DllMain
友情链接: 知道 电影 百科 好搜 问答 微信 值得买 巨便宜 天天特价 洛阳汽车脚垫 女装 女鞋 母婴 内衣 零食 美妆 汽车 油价 郑州 北京 上海 广州 深圳 杭州 南京 苏州 武汉 天津 重庆 成都 大连 宁波 济南 西安 石家庄 沈阳 南阳 临沂 邯郸 保定 温州 东莞 洛阳 周口 青岛 徐州 赣州 菏泽 泉州 长春 唐山 商丘 南通 盐城 驻马店 佛山 衡阳 沧州 福州 昆明 无锡 南昌 黄冈 遵义
© 2026 haodianxin 百科 豫ICP备14030218号-3 消耗时间:0.022秒 内存0.85MB 2025-09-15 19:28:16