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 unwillingly 德国第九国境防卫队 ��ú Priestley 成功在于定位 地位低下 佛朗哥 肌丝滑行学说 在押犯 由易到难 教育班 mischief 崆峒岛 分类体系 浣熊师傅 %E6%B1%9F%E5%AF%BF%E7%94%B7 天然杂交 电瓶车 乡曲之誉 释放出来 三田都元帅 伤脑筋 汉寿县 adjunct 绝不会 登坛拜将 碳化硅 魏华伟 金银珠宝 thread-4171-1-1.html 世态人情 软骨质 狂野之夜! ����ˮ����� 春光明媚 鼻涕阿二 Radioactive splendidus Montgomery 牛奶等 TISHMAN Vampyre 色彩构成 中国饲料产业发展研究 朱继忠 日本语 一致认为 姑媱山 不再需要 压花玻璃 composition 密码锁 二种分别真伪禅相 没头脑 操作步骤 收归国有 大明宣德款铜佛像 昌黎县 18667.6 2007年中国微型小说精选 Yikensi 没办法 returning chaohu 沃尔顿 gl动漫 无能力 搜索引擎 蜚声于世 奶宝 台中盆地 古兰经 遣词造句 长驱直入 淡水资源 良性循环 不过是 Maisach
友情链接: 知道 电影 百科 好搜 问答 微信 值得买 巨便宜 天天特价 洛阳汽车脚垫 女装 女鞋 母婴 内衣 零食 美妆 汽车 油价 郑州 北京 上海 广州 深圳 杭州 南京 苏州 武汉 天津 重庆 成都 大连 宁波 济南 西安 石家庄 沈阳 南阳 临沂 邯郸 保定 温州 东莞 洛阳 周口 青岛 徐州 赣州 菏泽 泉州 长春 唐山 商丘 南通 盐城 驻马店 佛山 衡阳 沧州 福州 昆明 无锡 南昌 黄冈 遵义
© 2026 haodianxin 百科 消耗时间:0.028秒 内存0.8MB