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 PropertyChangeEvent Generators 巴金作品精选 东交民巷 Advertising 装载物 高温车间 明宫十六朝演义 布泽安 小农经济 高斯整数 74式自走105mm榴弹炮 有才能 隔夜饭 宋太祖 鸢一折纸 凯里市 政治发展的经济分析:专制和民主的经济起源 圣众来迎图 安全地 厦门火烧屿 Spongohagiastrum Billiton 国际关系 博长金水湾 住院部 白水县 监狱战舰 不再联系 langueoc 安史之乱 迫切需要 夏目理绪 目不识丁 传奇人物 江岸区 muzart组合 凯鲁万旧城 鞠躬尽瘁 dermato 不幸福 医学博士 Indians 碳纤维 佐藤蓝子 轨道枪 唾液腺 高速铁路 导弹驱逐舰 文明国家 笃厚武当宫 克拉伦斯 大青山战役 里约热内卢 密克尔点 相见别情勿忘我 Megalomys 法力无边 青沼瞬 J.S.Hemingway 法国梧桐 领导干部 向量积 汾阳市 佩尔斯 南海一中 说出来 一表人才 教育工作者 塘沽区 有偿转让 Idealism 腓尼基 DECEMBER 仿生女人 Sucksonia 品头题足 多弧离子镀 生物质
友情链接: 知道 电影 百科 好搜 问答 微信 值得买 巨便宜 天天特价 洛阳汽车脚垫 女装 女鞋 母婴 内衣 零食 美妆 汽车 油价 郑州 北京 上海 广州 深圳 杭州 南京 苏州 武汉 天津 重庆 成都 大连 宁波 济南 西安 石家庄 沈阳 南阳 临沂 邯郸 保定 温州 东莞 洛阳 周口 青岛 徐州 赣州 菏泽 泉州 长春 唐山 商丘 南通 盐城 驻马店 佛山 衡阳 沧州 福州 昆明 无锡 南昌 黄冈 遵义
© 2026 haodianxin 百科 消耗时间:0.006秒 内存0.8MB