登錄檔自舉

2021-05-26 03:21:25 字數 3831 閱讀 3125

什麼是登錄檔自舉?它在系統中的作用是什麼? 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...