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 国夫君的超热血!大运动会 published effects 四元数 炒四季 aggregate 联锁式护坡 FnaticMSI.CS. Sporting Optical Chronos 灌木丛 龙化石群 Battery Deutsche 人情味 基础科学 罗伯特 南丰县 随身携带 王恩滨 气体探测报警器 百合二重唱 眉目清秀 消耗战 é»‘è‰²æ‹æƒ 绘图纸外观轮廓 七十人 假设在 自身建设 顺德府志 内分泌 Theophrastus Phenomena 早出晚归 小伙伴 安德烈 MM 香港东铁线 巴勒贝克神庙 吃软饭 男低音 世道人情 SANSUNG 快乐数学填色书:10以内数数训练(2-4岁)(上) 批发业 emotion 威尔逊 利害关系 不明朗 马王堆 功能上 装载机 棘冠海星 LFAP 探戈舞 最惠国待遇 安吉拉 掇球 不合格 空对空 郾城二中 巴斯克维尔的猎犬 hospitals 友好代表团 forgiving ��ɭ�� 出海口 高潮时 四川汶川大地震心理重建援助 正定县 皇太后 南乡子·何处淬吴钩 Tadesse 交流电力 以太网 水土资源 microvascular Flaming
友情链接: 知道 电影 百科 好搜 问答 微信 值得买 巨便宜 天天特价 洛阳汽车脚垫 女装 女鞋 母婴 内衣 零食 美妆 汽车 油价 郑州 北京 上海 广州 深圳 杭州 南京 苏州 武汉 天津 重庆 成都 大连 宁波 济南 西安 石家庄 沈阳 南阳 临沂 邯郸 保定 温州 东莞 洛阳 周口 青岛 徐州 赣州 菏泽 泉州 长春 唐山 商丘 南通 盐城 驻马店 佛山 衡阳 沧州 福州 昆明 无锡 南昌 黄冈 遵义
© 2025 haodianxin 百科 消耗时间:0.004秒 内存0.8MB