什麼是登錄檔自舉?它在系統中的作用是什麼? n
登錄檔自舉是由裝置管理器(
device.exe
)在系統啟動時載入的。 n
登錄檔自舉時,通過讀取登錄檔來尋找系統中的新裝置。設定新裝置的登錄檔資訊應當是在安裝驅動程式時,即
installdriver
入口中設定到登錄檔中去的。 n
實現為regenum.dll
動態鏈結庫。 n
實現將**存放在
wince400/public/common/oak/drivers/regenum
目錄下。
登錄檔自舉是裝置驅動載入中的一部分。在系統啟動時,初始化裝置管理器完畢後,裝置管理器將進入裝置驅動載入階段,在這個階段的早期將進行登錄檔自舉,這個過程在登錄檔中不斷尋找新的裝置驅動(未載入,但是需要被載入的裝置驅動)載入。登錄檔自舉是可以重入的,通過軟體函式呼叫可以重新進行登錄檔自舉。
下面以乙個例子來分析登錄檔自舉的具體過程:
[hkey_local_machine/drivers]
"rootkey"="drivers//builtin"
"dll"="regenum.dll「
[hkey_local_machine/drivers/builtin]
"dll"="regenum.dll"
[hklm/drivers/ builtin /pci]
"dll"="pcibus.dll"
"order"=dword:4
"flags"=dword:1
[hkey_local_machine/drivers/builtin/virtual]]
"order"=dword:0
"flags"=dword:0
"dll"="regenum.dll"
[hkey_local_machine/drivers/builtin/virtual /ndis]
"dll"="ndis.dll"
"order"=dword:1
"prefix"="nds" 1
.在device.exe
進入登錄檔自舉階段,檢查
hklm/drivers/rootkey
指向的子鍵。在這個例子中,
rootkey
的值被設定成
drivers//builtin
,一般預設為
drivers。
2.在hkey_local_machine/drivers/builtin
子鍵中檢查
dll項的值,這裡被設定成
regenum.dll
,也就是登錄檔自舉模組,然後載入這個
dll。 3
.將hkey_local_machine/drivers/builtin
作為引數傳遞給
regenum
的init
函式。注意,
init
函式不是乙個流式介面,
regenum
只檢查鍵下的一級子鍵中有無
dll需要載入,至於二級以下的子鍵,則必須遞迴呼叫
regenum。
4.init
函式在hklm/drivers/rootkey
鍵下基於「
order
」值的順序進行檢查。逐個檢查每個入口載入,為它們初始化驅動程式。在此,
hklm/drivers/rootkey
下有兩個子鍵:
[hklm/drivers/builtin/pci]
和[hkey_local_machine/drivers/builtin/virtual]
,其中,
[hklm/drivers/builtin/pci]
的order
的值為4
,而[hkey_local_machine/drivers/builtin/virtual]]
的order值為0
,因此regenum
將優先檢查
[hkey_local_machine/drivers/builtin/virtual]。
5.regenum
進入[hkey_local_machine/drivers/builtin/virtual]
子鍵進行檢查,發現此子鍵下的
dll項值為
regenum.dll
,則說明要遞迴使用
regenum
檢查其下的子鍵。這裡為
[hkey_local_machine/drivers/builtin/virtual/ndis]
,其order
項值為1
,並且沒有其他子鍵與其競爭載入順序,所以它將被
[hkey_local_machine/drivers/builtin/virtual]
下的regenum.dll
載入。[hkey_local_machine/drivers/builtin/virtual /ndis]
下的dll
項值為ndis.dll
,因此ndis
驅動被載入。 6
.完成[hkey_local_machine/drivers/builtin/virtual]
下一級子鍵的檢查後,
[hkey_local_machine/drivers/builtin]
下的regenum.dll
將檢查[hklm/drivers/ builtin /pci]
子鍵下的
dll,這裡為
pcibus.dll
,因此pci
驅動被載入。
通過以上步驟這個例子中的登錄檔自舉完成。
在登錄檔自舉的過程中,子鍵有表
1中所示的各種形式: 表
1子鍵的形式 子
鍵 型別
描述 order
dword
最小的order
值將優先被載入
dllszchar
定義了要讓登錄檔自舉程式載入的驅動的
dll名,這個名稱也將被寫入
activedevice
。只有dll
項是必須被設定的,如果
order
項沒有被設定,那麼該驅動將在所有設定了
order
項的驅動被載入後載入
index
dword
同類裝置驅動的例項被載入時可以通過不同的索引號來區分。如
com0:com1:
,索引的取值範圍從0到
9,如果沒有指定索引值,那麼系統將會自動指定乙個
flags
dword
描述登錄檔自舉的預設操作。
flags
的值是一系列位,他們將描述
activatedevice
的行為。如果不需要這個項的話,可以將其設定為0。位
3~23為保留位,必須設定成
0,登錄檔自舉時可以使用位23~
31來設定
表2是對flag
各個位功能的描述: 表
2flag
各個位功能
flag 值
功能描述
devflags_none
0x00000000
沒有任何功能定義
devflags_unload
0x00000001
在呼叫驅動程式
***_init
入口後,解除安裝驅動程式
devflags_loadlibrary
0x00000002 使用
loadlibrary
函式來載入驅動,而不是
loaddriver
devflags_noload
0x00000004
不載入dll
登錄檔自舉
登錄檔自舉 什麼是登錄檔自舉?它在系統中的作用是什麼?n登錄檔自舉是由裝置管理器 device.exe 在系統啟動時載入的。n登錄檔自舉時,通過讀取登錄檔來尋找系統中的新裝置。設定新裝置的登錄檔資訊應當是在安裝驅動程式時,即installdriver入口中設定到登錄檔中去的。n實現為regenum....
windows登錄檔 登錄檔的認識
登錄檔的特點 1.登錄檔允許對硬體 系統引數 應用程式和裝置驅動程式進行跟蹤配置,這使得修改某些設定後不用重新啟動成為可能。2.登錄檔中登入的硬體部分資料可以支援高版本的即插即用特性。當windows檢測到機器上的新裝置時,就把有關資料儲存到登錄檔中,另外,還可以避免新裝置與原有裝置之間的資源衝突。...
監視登錄檔,,列舉登錄檔項
建立登錄檔項 lret regopenkeyex hkey current user,t software hrjd ascpatch 0,key all access,hkey if lret error success waifainfo info lret regsetvalueex hkey...