windows驱动加载顺序
CreateService的dwStartType 形參 有幾個選項值
SERVICE_BOOT_START SERVICE_AUTO_START SERVICE_SYSTEM_START??
我們一般都只用SERVICE_DEMAND_START
那么其他幾個值的含義呢? 參考MSDN
windows驅(qū)動加載順序:
1. 判斷StartType,依次按SERVICE_BOOT_START(0),SERVICE_SYSTEM_START(1), SERVICE_AUTO_START(2)順序自動加載
如360的HookPort驅(qū)動 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列表里面的順序加載
系統(tǒng)會根據(jù)tag值來排定加載順序
可以看到Hookport加載的時機是非常早的,這個時候文件系統(tǒng)還沒加載,系統(tǒng)只能訪問少數(shù)幾個路徑
所以驅(qū)動要放在%root%\system32\drivers\下
PS:Tag對驅(qū)動加載的順序只是微調(diào)
如果想做到驅(qū)動加載得比HookPort更早,那么可以同樣設(shè)置驅(qū)動為boot bus extender類型,同時在GroupOrderList添加一個tag id,或者直接在ServiceGroupOrder添加一個新組cogito,然后把驅(qū)動
設(shè)置為cogito 類型,即更改CreateService的?lpLoadOrderGroup?參數(shù)。
總結(jié)
以上是生活随笔為你收集整理的windows驱动加载顺序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 72 include动作和指令的区别
- 下一篇: 计算机操作系统(11):负载均衡