裝置驅動程式的安裝和啟動

2021-04-06 23:45:54 字數 2815 閱讀 7130

http://www.yesky.com/20020819/1625888.shtml 名稱

資料型別 說明

type

reg_dword

驅動程式的種類

start

reg_dword

驅動程式的起始啟動時間

errorcontrol

reg_dword

驅動裝入失敗的錯誤處理

group

reg_sz

驅動程式的組名

dependongroup

reg_multi_sz

所依賴的其他驅動程式

tagreg_binary

同組內驅動程式裝入順序

parameters

(key)

驅動程式特定的引數鍵

type值為1表示核心模式驅動程式;為2表示檔案系統驅動程式。

errorcontrol值為0表示日誌記錄錯誤並忽略;值為1表示日誌記錄錯誤並顯示乙個對話方塊;值為2表示日誌記錄錯誤,並用最後的正確配置重新啟動;值為3表示日誌記錄錯誤,如果已經使用過正確配置,返回失敗。

在任何乙個裝置驅動程式中,上表中的前三項引數都是必需的。

2.控制驅動程式的裝入次序

有時候控制多個驅動程式的裝入次序是必要的。例如一套驅動程式中包括三個驅動程式,分別是jbchanger.sys,changerdisk.sys和vdisk.sys。jbchanger和changerdisk是兩個scsi類驅動程式,它們都依賴scsi小埠(mini port驅動程式),同時changerdisk必須在jbchanger啟動之後啟動。vdisk是虛擬的磁碟驅動程式,它必須在jbchanger和changerdisk都啟動之後才能啟動成功。

3.驅動程式的start值

上面登錄檔中驅動程式的start值控制驅動程式在系統啟動的時間。目前,start可以取以下值,此外為該值留有擴充套件餘地,以適用於新的要求:

(l)0x0 (service_boot_start):這個值指定本驅動程式應該由作業系統裝入程式啟動。一般的驅動程式不會採用本值,因為系統在這個時候幾乎還沒有啟動,大部分系統尚不可用。

(2)0x1 (service_system_start):該值表示在作業系統裝入後但同時初始化它自己時啟動驅動程式。

(3)0x2 (service_auto_start):該值表示在整個系統啟動並執行後由服務控制管理器裝入。

(5)0x4 (service_disabled):表示本驅動程式被禁用。

注意在除錯驅動程式的時候,最好將start值設定為3來手工啟動,這是因為如果設定為自動啟動,而驅動程式在啟動的過程中又發生了異常錯誤的話,可能導致系統不能啟動。

如果沒有緊急恢復盤,首先可以嘗試在啟動的時候選擇用已知的配置來啟動系統,看是否能啟動成功。如果失敗,可以用dos啟動後到/%systemroot%/system32/drivers目錄下將出現問題的驅動程式刪除,然後系統就可以啟動了。

不過如果nt安裝在ntfs分割槽,dos啟動後將看不到這個分割槽,這樣就必須將硬碟掛到另一nt系統上來刪除這個檔案了。通過設定start可以控制驅動程式在不同的時候啟動。但如果要解決依賴性問題,則需要使用group和dependongroup值。

首先要確定自己的驅動程式使用的group名,系統有一些定義好的組名,對於當前系統存在的組名,可以觀察登錄檔的/hkey_local_machine/system/currentcontrol-

set/control/servicegrouporder/list的鍵值。例如該值可以設定為:

… scsi miniport

port

primary disk

scsi class

scsi cdrom class

filter

boot file system …

這裡每一行都是乙個group名,一般來說某個驅動程式都屬於某乙個group。系統啟動時按照該list下組的順序依次啟動各組裡的驅動程式。例如jbchanger和changerdisk都屬於scsi class組。如果你覺得該表中的組名都不合適,可以在該list的適當位置中新增新的組名。

dependongroup值控制本驅動程式啟動的時候必須先啟動另一組的驅動程式,例如jbchanger和changerdisk的啟動就依賴於scsi miniport組。因此jbchanger和changerdisk的dependongroup值都為scsi miniport。

4.修改登錄檔的方法

在登錄檔裡這些值可以手工修改,也可以自己程式設計利用win32 api進行新增,同時也可以用ini檔案的方式來新增。下面是乙個ini(檔名為vdisk.ini)檔案的例子。

/registry/machine/system/currentcontrol

set/services/vdisk

type=reg_dword 0x00000001

start=reg_dword 0x00000003

errorcontrol=reg_dword 0x00000001

group=scsi class

parameters

driveletter=n:

然後以vdisk.ini為引數執行regini.exe。就會自動在登錄檔裡新增相應的項。

5.啟動裝置驅動程式

6.除錯工具

目前nt驅動程式的除錯工具只有windbg和softice,windbg的使用需要雙機環境,強力推薦使用softice。注意目前國內ftp伺服器上的softice 3.2 for nt的setup.ins檔案是錯誤的,它將導致安裝程式不認識你的nt,可以用3.0的setup.ins檔案替代3.2的setup.ins,這樣就可以安裝成功

linux裝置驅動程式 字元裝置驅動程式

先留個 有一起學習驅動程式的加qq295699450 字元裝置驅動 這篇比較惱火。載入成功,但是讀不出來資料,有知道怎麼回事的,留個言,一起討論下 資料結構 struct scull mem struct scull dev dev 整個驅動程式 如下 include include include...

Linux裝置驅動程式 字元裝置驅動程式

1.檢視主裝置號,次裝置號 進入 dev目錄執行ls l,第四,五列分別為主次裝置號,10,180,1,5,這些是主裝置號,而60,63這些就是次裝置號 130 shell android dev ls l crw rw r system radio 10,60 1969 12 31 21 00 a...

裝置驅動程式

首先要問,什麼是裝置驅動程式?又名裝置處理程式,是i o系統的高層與裝置控制器之間的通訊程式 起乙個翻譯的作用 這個東西能幹什麼?簡要來說就是啟動指定裝置,完成上層指定的i o工作 裝置驅動程式的特點 略,書上193頁有 裝置處理方式 為每一類裝置設定乙個程序,專門用於執行這類裝置的i o操作 一對...