windows驱动加载顺序

CreateService的dwStartType 形参 有几个选项值
SERVICE_BOOT_START SERVICE_AUTO_START SERVICE_SYSTEM_START  
我们一般都只用SERVICE_DEMAND_START
那么其他几个值的含义呢? 参考MSDN

windows驱动加载顺序:
1. 判断StartType,依次按SERVICE_BOOT_START(0),SERVICE_SYSTEM_START(1), SERVICE_AUTO_START(2)顺序自动加载

如360的HookPort驱动 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\HookPort

其start键值为0 即SERVICE_BOOT_START

2.如果是同一个start的类型则按GroupOder加载 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder


HookPort的 grouporder是Boot Bus Extender

3. 如果grouporder也相同,那么按Tag值在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GroupOrderList列表里面的顺序加载


系统会根据tag值来排定加载顺序

可以看到Hookport加载的时机是非常早的,这个时候文件系统还没加载,系统只能访问少数几个路径
所以驱动要放在%root%\system32\drivers\下
PS:Tag对驱动加载的顺序只是微调

如果想做到驱动加载得比HookPort更早,那么可以同样设置驱动为boot bus extender类型,同时在GroupOrderList添加一个tag id,或者直接在ServiceGroupOrder添加一个新组cogito,然后把驱动
设置为cogito 类型,即更改CreateService的 lpLoadOrderGroup 参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值