我刚刚看了msdn上面有关delay-load dll的相关东东,对这个机制有点了解,但还不敢肯定对不对,所以写下我的理解,还请各位指正:
delay-load dll 是一种让程序在第一次呼叫dll函数的时候才加载该dll的机制,可以通过设定linker的参数来实现,具体的实现方法是需要特定的helper function 来帮助完成dll的加载过程,而这些helper function 可以自己写,也可以用m$提供的lib;pe 文件data directory 中的delay import directory项是给那些helper function 用的(用来储存delay-load 的dll的相关信息:dll 名称,dll handle ,函数地址....)....
因此:(下面是我自己的理解,也是最不肯定的地方)
在windows 加载含有delay-loaded dll的exe时,是不会理会这些dll的,windows loader 只是加载完import table 里面的所有dll,更新所有IAT,就转入exe文件的执行了。关于delay-load dll的一切,都将在exe中被处理.....实际情况是不是这样呢? 多谢指教
delay-load dll 是一种让程序在第一次呼叫dll函数的时候才加载该dll的机制,可以通过设定linker的参数来实现,具体的实现方法是需要特定的helper function 来帮助完成dll的加载过程,而这些helper function 可以自己写,也可以用m$提供的lib;pe 文件data directory 中的delay import directory项是给那些helper function 用的(用来储存delay-load 的dll的相关信息:dll 名称,dll handle ,函数地址....)....
因此:(下面是我自己的理解,也是最不肯定的地方)
在windows 加载含有delay-loaded dll的exe时,是不会理会这些dll的,windows loader 只是加载完import table 里面的所有dll,更新所有IAT,就转入exe文件的执行了。关于delay-load dll的一切,都将在exe中被处理.....实际情况是不是这样呢? 多谢指教
解决方案 »
- 如何使用Detours给全局下钩子?
- 求一个查找D盘下 所有EXE文件的 函数 返回EXE文件地址字符串~
- 求 按照直线 y = a*x +b 对称的变换矩阵,图形学高手务必请进!当直线平行x或者y轴出错
- 怎么使线程间不干扰?
- 怎么将一个CImageList中的某个图片追加到另外一个CImageList中???
- 请问pDC->DrawText("aaaaaaaaaaaaaaaaaaaa",StrRect,DT_WORDBREAK),当显示的内容长度大于StrRect.Width()时,为什么不能分行显示?请问要
- 来看看这个!
- 关于MFC移植程序的数据类型的转换
- 不创建窗体,能不能直接调用api,在屏幕上某个位置,显示一句话?
- 谁有ace的讨论群?
- 如下功能如何实现?
- 初学mfc用哪本书比较好,请大虾们推荐一下?
如果没有使用过 就不会加载了
http://www.microsoft.com/msj/1298/win32/win321298.aspx
http://www.microsoft.com/msj/1298/hood/hood1298.aspx
第二个看了,很有帮助,让我确认了我的理解是正确的。现在去试验一下~~可能会发现更多问题~~huanyun(无妻徒刑):
是windows管理的吧 加载Dll是Window进行的 不是程序自己加载确实不是,那篇文章里面有解释。而且仔细想一下的话,如果dll是在运行时被加载,他肯定就和windows loader 没关系了,windows loader 只管善前工作嘛~~
多谢多谢~~