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 这句话 初学者 其实不然
最新查询:officinalis tartaric Ergocalciferol 灵长目 西餐馆 图瓦语 胖胖的 不称职 共产党 乐于助人的公主 报告厅 有脉纹 测震仪 白令海峡 大林隆介 爵士舞 由下向上 保罗·朗之万 张存浩 主流派 红珊瑚 钴铬烤瓷牙 双流县国家税务局 三氯氧钒 并没有 勇闯魔鬼城 cruciata revenge Arithmetica 法兰兹·鲍亚士 Ȫ 纯粹是 吠陀神话 不出来 工商户 椰蓉椰浆吐司 蛮不讲理 Together 驰龙 百尺竿头 警察局长 位高权重 哮喘病 哈勒姆 牛肉炒粉 火箭炮 Manalovitz 上海市农业遗传育种重点实验室 会计凭证 开化寺连理塔 Human-Computer 关东军 Wainwright 维生素保健全书 伸长率 国际音理会 Bradbury life-longeducation 年老色衰 九龙湾 许萌 节约能源 王安稳 凸显出 物流安全 甲硫氨酸 神殇·永离 小伙伴 虫草花红烧鹿筋 空对地 火腿鸡丝炒面 卡什卡达里亚州 多形式 (共鸟)科 震耳欲聋 英国皇家旗 Interne relations DllMain
友情链接: 知道 电影 百科 好搜 问答 微信 值得买 巨便宜 天天特价 洛阳汽车脚垫 女装 女鞋 母婴 内衣 零食 美妆 汽车 油价 郑州 北京 上海 广州 深圳 杭州 南京 苏州 武汉 天津 重庆 成都 大连 宁波 济南 西安 石家庄 沈阳 南阳 临沂 邯郸 保定 温州 东莞 洛阳 周口 青岛 徐州 赣州 菏泽 泉州 长春 唐山 商丘 南通 盐城 驻马店 佛山 衡阳 沧州 福州 昆明 无锡 南昌 黄冈 遵义
© 2025 haodianxin 百科 豫ICP备14030218号-3 消耗时间:0.046秒 内存0.85MB 2025-09-15 19:28:16