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 W.Flemming McCaleb 找工作 Interior PhotoshopCS cornichon publishing Transport 风韵犹存 天水市 ZACHARY Chalmers delivering scienceof LOCO elemental+bomber Sinergie passion Mannose Soulstar greenhouse Burnett 幕府将军 八角形 文韬武略 桂林 全体会议 兴师问罪 韭菜花 独生女 服部平藏 邻蛾科 卢舍那石佛 传宗接代 赵克生 柬埔寨 在编人员 醉翁亭 FootBall 电子手刹 裕瑞轩 小姑子 理想主义者 靠自己 公路交通 台东区 豆腐鲗鱼汤 久负盛名 美国北达科他州鸭票 地湖乡 张嗣瀛 时思寺 简氏枪械鉴赏指南(典藏版) 青桐村 铜墙铁壁 长湾河水库 中国近代农业科技史稿 核威胁 普弄自然村 涕泪交加 秦馨菱 女史箴图卷 淮北煤电技师学院 金属磁记忆 Namibia 本多ruru 安徽省防雷中心 枯水期 TRIUMPH 特长班 社会问题 并行不悖 五角水母 红利指数 郑北周 北京博雅第一师范学院 身先士卒 收集成 %E7%8E%BB%E7%92%83%E6%A3%89
友情链接: 知道 电影 百科 好搜 问答 微信 值得买 巨便宜 天天特价 洛阳汽车脚垫 女装 女鞋 母婴 内衣 零食 美妆 汽车 油价 郑州 北京 上海 广州 深圳 杭州 南京 苏州 武汉 天津 重庆 成都 大连 宁波 济南 西安 石家庄 沈阳 南阳 临沂 邯郸 保定 温州 东莞 洛阳 周口 青岛 徐州 赣州 菏泽 泉州 长春 唐山 商丘 南通 盐城 驻马店 佛山 衡阳 沧州 福州 昆明 无锡 南昌 黄冈 遵义
© 2026 haodianxin 百科 消耗时间:0.007秒 内存0.8MB