加载顺序

前一段时间,在XueTr上发现个有趣的东西【驱动模块-加载顺序】,很好奇这个顺序是怎么来的,调查了一下。

在系统初始化的时候,决定驱动程序在什么时候被载入的信息保存在注册表中。

1. 首先,按【批次】第一批,第二批,第三批顺序载入.
   【批次】,是由【HKLM/SYSTEM/CurrentControlSet /Services/驱动名/Start】决定的。
  
2. 其次,同一批次的按【驱动所属组】的【组顺序】载入。
   【驱动所属组】,是由【HKLM/SYSTEM/CurrentControlSet/Services/驱动名/Group】决定的,若无该键值,就在所有的组后面,按字母序。
   【组顺序】,是由【HKLM/SYSTEM/CurrentControlSet/Control /ServiceGroupOrder/List】决定的。
  
3. 最后,同一组内的按【组内序】载入。
   【组内序】,是由【HKLM/SYSTEM/CurrentControlSet/Control/GroupOrderList/组名】中记录的【Tag序】来决定的。
   【Tag序】,由若干DWORD组成,第一个表示总共有几个驱动Tag 。后面每个DWORD都是组内某个驱动的【Tag值】。
   【Tag值】,是由【HKLM/SYSTEMCurrent/ControlSet/Services/驱动名/Tag】记录的,这个值在安装的时候分配,先装的Tag值小,后装的Tag值大。

 

 

这个顺序是如何定制的,其实很简单,来自于驱动创建时使用的API函数,CreateService,它的很多参数会决定其加载顺序的位置,我只是把最终结果整理了一下,具体信息,有兴趣的自己去查MSDN。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值