注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

【★☆★】KnownDlls 与 MoveFileEx(重启替换文件MOVEFILE_DELAY_UNTIL_REBOOT )  

2012-02-12 16:19:35|  分类: sr |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
KnownDlls 与 MoveFileEx(重启替换文件MOVEFILE_DELAY_UNTIL_REBOOT )

        两者本身并没有直接关联。
        对于驱动程序,和dll的加载不太一样,所以,驱动加载的过程中,我们可以删除这个驱动文件,这并不影响驱动的运行,直至驱动程序重启。但是,对于dll,由于一些软件可能在使用这个dll,所以,想要替换这个文件,可能需要重启系统, 也就是使用MoveFileEx这个API函数,并使用参数OVEFILE_DELAY_UNTIL_REBOOT 。
        这个函数尝试替换文件,如果不能替换,它就会写入一些注册表信息(PendingFileRenameOperations)。而系统下一次重启时,读取这个注册表项,并在所有的dll加载之前,完成文件替换操作。这样一来,理论上可以替换任何文件了。驱动无需重启就可以替换,如果不是驱动,那么重启后,在其加载前就被替换了。
        由此,我们也可以反推出一些结论。重启替换文件 是在 KnownDlls之前处理的;重启替换文件 时,ntdll还没有加载。
        所以,从某种意义上说,smss.exe进程还不算建立了,甚至可以说,事实上这个还不是完全运行在smss进程,而是运行在内核执行体的。

        另外,在smss的KnownDlls 处理部分,系统还会加载所有的KnownDlls 文件。可见,KnownDlls 太多了,肯定会影响系统的启动速度的。
        另一方面,KnownDlls 加载这些dll,都是位于用户态的。

By:章永辉



  评论这张
 
阅读(1275)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016