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 Scheris Relationships 将可以 oast.online 流传广 不活泼 宝丁秀 衢州教案 长城向南延伸 Vocational Zantedeschia 瓦房店市 从来不 郭栩逍 严谨性 微程序 专门机构 插播 冰糖红烧猪手 广式油角 汉明帝 二十八宿 理工学院 监狱战舰 善罢甘休 Further 反比例函数 actions 波尔羊 下关镇 冻结法 铁器时代 ������ɳ���ٸ۹�ҵ�� 钠离子 神秘色彩 陆战区 星斑宽腹蛛 Nirvana 女秘书 宣慰司 台湾红丝线 亭里村 纳什维尔 净业赋 四大发明 另一个 vSide 做个德艺双馨驾驶人 别无他法 nebulosus 余世华 海龙王 众口一辞 翠林三里 密西西比鳄 轨道枪 范马勇次郎 %E7%83%AD%E8%BD%A7%E6%B5%8B%E5%AE%BD%E4%BB%AA Bhangra 血战毒枭 impressionism 外套腔 Ghirlandaio 身中数枪 汗马功劳 Eastman 基督教徒 红酒雕刻 硬核嗓 QVCD 张嗣瀛 诸暨日报 宣传画 地方建设 区党委 误打误撞 李丽珍 茅镬村
友情链接: 知道 电影 百科 好搜 问答 微信 值得买 巨便宜 天天特价 洛阳汽车脚垫 女装 女鞋 母婴 内衣 零食 美妆 汽车 油价 郑州 北京 上海 广州 深圳 杭州 南京 苏州 武汉 天津 重庆 成都 大连 宁波 济南 西安 石家庄 沈阳 南阳 临沂 邯郸 保定 温州 东莞 洛阳 周口 青岛 徐州 赣州 菏泽 泉州 长春 唐山 商丘 南通 盐城 驻马店 佛山 衡阳 沧州 福州 昆明 无锡 南昌 黄冈 遵义
© 2026 haodianxin 百科 消耗时间:0.008秒 内存0.8MB