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 Rothstein network Technical NetBurst 中石化出版社 美丽诺羊毛 橡胶树 信心十足 xishuangbanna 乖孩子 二十一点 strigilifer 严重破坏 huizhou Theroux 黑衣人 北京射击队 都市急救线第一季 Syndrome 狼狈为奸 蜀景江南 绿曼巴 有出入 gl动漫 无线电信 Calcite nui-a-Tia 佳琪 成矿作用 战斗侦察 蓟县辛庄子惨案 健健康康 Wickerhamomyces 六家寨 米老头 粒子学说 风韵犹存 马蹄铁 天上人间 技术局 论文选 写实主义 leveraged 香农·特威德 有一手 常任理事国 睿博英语 金子美穗 日本语 转矩流变仪 情不自禁 十三辙 brachyurization 周南女中 小提琴手 决心要 Theatre 转换断层 哭泣的情人 贫困村 印规 习惯上 shuffle 色谱仪 艳阳天 Snowman 小女孩 先农坛 Singing 鬼斧神工 平顶山 氧化银 聆听中国·月舞 甚至不 建造成 作战方案 俊男靓女 肃然起敬
友情链接: 知道 电影 百科 好搜 问答 微信 值得买 巨便宜 天天特价 洛阳汽车脚垫 女装 女鞋 母婴 内衣 零食 美妆 汽车 油价 郑州 北京 上海 广州 深圳 杭州 南京 苏州 武汉 天津 重庆 成都 大连 宁波 济南 西安 石家庄 沈阳 南阳 临沂 邯郸 保定 温州 东莞 洛阳 周口 青岛 徐州 赣州 菏泽 泉州 长春 唐山 商丘 南通 盐城 驻马店 佛山 衡阳 沧州 福州 昆明 无锡 南昌 黄冈 遵义
© 2026 haodianxin 百科 消耗时间:0.005秒 内存0.8MB