訓練
模組
Troubleshoot device driver failures - Training
This module focuses on the role of device drivers and troubleshooting problems that pertain to them.
本節提供下列裝置控制台 (DevCon.exe) 命令的範例:
因為 DevCon 作業會使用識別碼和識別碼模式來識別裝置,因此使用 DevCon 的常見第一個步驟是在電腦上建立裝置的硬體識別碼參考檔案。
下列命令會使用 DevCon HwIDs 作業,其會傳回標識碼和裝置描述。 它會使用通配符 (*) 來代表本機電腦上的所有裝置。
devcon hwids *
由於輸出冗長且重複使用,因此請將輸出儲存在文本檔中以供參考。
下列命令會使用通配符 (*) 來代表電腦上的所有裝置。 它會使用重新導向字元 (>) 將命令輸出儲存在 hwids.txt 檔案中。
devcon hwids * > hwids.txt
若要尋找特定裝置的硬體識別碼,請輸入硬體識別碼或模式、相容的標識碼或模式、裝置實例標識碼或模式,或裝置設定類別的名稱。
下列命令會使用 DevCon HwIDs 作業和模式來尋找電腦上的磁碟驅動器硬體識別碼。 (使用者假設模式出現在其中一個裝置標識碼中。命令會使用通配符 (*) 來代表任何標識符中可能位於或後面“floppy” 一詞的所有字元。
devcon hwids *floppy*
作為回應,DevCon 會顯示電腦上的磁碟驅動器裝置實例標識碼、硬體標識元和相容標識符。 您可以在後續的 DevCon 命令中使用這些識別碼。
FDC\GENERIC_FLOPPY_DRIVE\5&39194F6D&0&0
Name: Floppy disk drive
Hardware ID's:
FDC\GENERIC_FLOPPY_DRIVE
Compatible ID's:
GenFloppyDisk
1 matching device(s) found.
在此情況下,片語 「floppy」 只會發生在電腦上的一個裝置的硬體識別碼或相容標識碼中。 如果它發生在多個裝置的標識碼中,則其標識符中具有「軟盤」的所有裝置都會出現在輸出中。
下列命令會使用 DevCon HwID 作業和裝置設定類別來尋找埠裝置安裝類別中所有裝置的硬體識別碼。 類別名稱前面的等號 (=) 表示它是類別,而不是識別碼。
devcon hwids =ports
作為回應,DevCon 會顯示埠設定類別中三個裝置的硬體標識碼和相容標識碼。
ACPI\PNP0401\4&B4063F4&0
Name: ECP Printer Port (LPT1)
Hardware ID's:
ACPI\PNP0401
*PNP0401
ACPI\PNP0501\1
Name: Communications Port (COM1)
Hardware ID's:
ACPI\PNP0501
*PNP0501
ACPI\PNP0501\2
Name: Communications Port (COM2)
Hardware ID's:
ACPI\PNP0501
*PNP0501
3 matching device(s) found.
因為 DevCon 作業可以使用裝置安裝類別來識別裝置,所以在電腦上建立裝置設定類別的參考檔案會很有用。
下列命令會 使用 DevCon 類別 作業,它會傳回電腦上所有類別的清單和描述。
devcon classes
由於輸出冗長且重複使用,因此請將輸出儲存在文本檔中以供參考。
下列命令會顯示電腦上的所有裝置類別。 它會使用重新導向字元 (>) 將命令輸出儲存在 classes.txt 檔案中。
devcon classes > classes.txt
下列命令會 使用 DevCon ListClass 作業來列出 Net 中的裝置、網路適配器的裝置設定類別。
devcon listclass net
作為回應,DevCon 會顯示 Net 安裝程式類別中每個裝置的裝置實例識別碼和描述。
Listing 6 device(s) for setup class "Net" (Network adapters).
PCI\VEN_10B7&DEV_9200&SUBSYS_00BE1028&REV_78\4&BB7B4AE&0&60F0: 3Com 3C920 Integrated Fast Ethernet Controller (3C905C-TX Compatible)
ROOT\MS_L2TPMINIPORT\0000 : WAN Miniport (L2TP)
ROOT\MS_NDISWANIP\0000 : WAN Miniport (IP)
ROOT\MS_PPPOEMINIPORT\0000 : WAN Miniport (PPPOE)
ROOT\MS_PPTPMINIPORT\0000 : WAN Miniport (PPTP)
ROOT\MS_PTIMINIPORT\0000 : Direct Parallel
雖然很有趣,但此顯示並未在 Net 安裝程式類別中提供裝置的硬體識別碼。 下列命令會 使用 DevCon HwIDs 作業來列出 Net 安裝類別中的裝置。 在 DevCon HwIDs 命令中,類別名稱前面會加上等號 (=), 以指出它是類別,而不是識別符。
devcon hwids =net
產生的顯示會列出Net類別中的裝置,並包含類別中裝置的裝置實例標識碼、硬體識別碼和相容的裝置標識碼。
PCI\VEN_10B7&DEV_9200&SUBSYS_00BE1028&REV_78\4&BB7B4AE&0&60F0
Name: 3Com 3C920 Integrated Fast Ethernet Controller (3C905C-TX Compatible)
Hardware ID's:
PCI\VEN_10B7&DEV_9200&SUBSYS_00BE1028&REV_78
PCI\VEN_10B7&DEV_9200&SUBSYS_00BE1028
PCI\VEN_10B7&DEV_9200&CC_020000
PCI\VEN_10B7&DEV_9200&CC_0200
Compatible ID's:
PCI\VEN_10B7&DEV_9200&REV_78
PCI\VEN_10B7&DEV_9200
PCI\VEN_10B7&CC_020000
PCI\VEN_10B7&CC_0200
PCI\VEN_10B7
PCI\CC_020000
PCI\CC_0200
ROOT\MS_L2TPMINIPORT\0000
Name: WAN Miniport (L2TP)
Hardware ID's:
ms_l2tpminiport
ROOT\MS_NDISWANIP\0000
Name: WAN Miniport (IP)
Hardware ID's:
ms_ndiswanip
ROOT\MS_PPPOEMINIPORT\0000
Name: WAN Miniport (PPPOE)
Hardware ID's:
ms_pppoeminiport
ROOT\MS_PPTPMINIPORT\0000
Name: WAN Miniport (PPTP)
Hardware ID's:
ms_pptpminiport
ROOT\MS_PTIMINIPORT\0000
Name: Direct Parallel
Hardware ID's:
ms_ptiminiport
6 matching device(s) found.
下列命令會 使用 DevCon ListClass 作業來列出 DiskDrive、CDROM 和 TapeDrive 類別中的裝置。
devcon listclass diskdrive cdrom tapedrive
作為回應,DevCon 會顯示這些類別中的裝置。
Listing 1 device(s) for setup class "DiskDrive" (Disk drives).
IDE\DISKWDC_WD204BA_____________________________16.13M16\4457572D414D3730323136333938203120202020: WDC WD204BA
Listing 1 device(s) for setup class "CDROM" (DVD/CD-ROM drives).
IDE\CDROMSAMSUNG_DVD-ROM_SD-608__________________2.2_____\4&13B4AFD&0&0.0.0: SAMSUNG DVD-ROM SD-608
No devices for setup class "TapeDrive" (Tape drives).
下列命令會 使用 DevCon DriverFiles 作業來列出系統上裝置使用的驅動程式檔名。 命令會使用通配符 (*) 來指出系統上的所有裝置。 由於輸出很廣泛,因此命令會使用重新導向字元 (>) 將輸出重新導向至參考檔案,driverfiles.txt。
devcon driverfiles * > driverfiles.txt
下列命令會 使用DevCon DriverFiles 作業來搜尋本機電腦上滑鼠裝置所使用的設備驅動器。 它會依其中一個硬體標識碼 HID\Vid_045e&Pid_0039&Rev_0121 來識別裝置。 硬體識別碼會以引號括住,因為它包含連字元 (&) 。
devcon driverfiles "HID\Vid_045e&Pid_0039&Rev_0121"
作為回應,DevCon 會顯示支援滑鼠裝置的兩個設備驅動器。
HID\VID_045E&PID_0039\6&DC36FDE&0&0000
Name: Microsoft USB IntelliMouse Optical
Driver installed from c:\windows\inf\msmouse.inf [HID_Mouse_Inst]. 2 file(s)
used by driver:
C:\WINDOWS\System32\DRIVERS\mouhid.sys
C:\WINDOWS\System32\DRIVERS\mouclass.sys
1 matching device(s) found.
下列命令會使用 DevCon DriverNodes 命令和識別碼模式來列出軟體列舉裝置的驅動程序節點。 模式對於尋找可能不在相同設定類別中之類似裝置的資訊很有用。
下列命令會使用標識符模式 sw\* 來指定其硬體識別碼或相容標識符開頭為 “sw” 的裝置,也就是軟體列舉的裝置。
devcon drivernodes sw*
作為回應,DevCon 會顯示系統上軟體列舉裝置的驅動程序節點。
SW\{A7C7A5B0-5AF3-11D1-9CED-00A024BF0407}\{9B365890-165F-11D0-A195-0020AFD156E4}
Name: Microsoft Kernel System Audio Device
DriverNode #0:
Inf file is c:\windows\inf\wdmaudio.inf
Inf section is WDM_SYSAUDIO
Driver description is Microsoft Kernel System Audio Device
Manufacturer name is Microsoft
Provider name is Microsoft
Driver date is 7/1/2001
Driver version is 5.1.2535.0
Driver node rank is 0
Driver node flags are 00002244
Inf is digitally signed
SW\{B7EAFDC0-A680-11D0-96D8-00AA0051E51D}\{9B365890-165F-11D0-A195-0020AFD156E4}
Name: Microsoft Kernel Wave Audio Mixer
DriverNode #0:
Inf file is c:\windows\inf\wdmaudio.inf
Inf section is WDM_KMIXER
Driver description is Microsoft Kernel Wave Audio Mixer
Manufacturer name is Microsoft
Provider name is Microsoft
Driver date is 7/1/2001
Driver version is 5.1.2535.0
Driver node rank is 0
Driver node flags are 00002244
Inf is digitally signed
SW\{CD171DE3-69E5-11D2-B56D-0000F8754380}\{9B365890-165F-11D0-A195-0020AFD156E4}
Name: Microsoft WINMM WDM Audio Compatibility Driver
DriverNode #0:
Inf file is c:\windows\inf\wdmaudio.inf
Inf section is WDM_WDMAUD
Driver description is Microsoft WINMM WDM Audio Compatibility Driver
Manufacturer name is Microsoft
Provider name is Microsoft
Driver date is 7/1/2001
Driver version is 5.1.2535.0
Driver node rank is 0
Driver node flags are 00002244
Inf is digitally signed
3 matching device(s) found.
下列命令會 使用 DevCon DriverNodes 作業,列出其裝置實例標識碼以 ROOT\MEDIA 開頭的所有裝置的驅動程式套件,也就是 Enum\Root\Media 登錄子機碼中的裝置。 命令會使用 at 字元 (@) 表示片語位於裝置實例識別碼中。
devcon drivernodes @ROOT\MEDIA*
作為回應,DevCon 會顯示裝置實例標識符開頭為 “ROOT\MEDIA” 的裝置驅動程序節點。
ROOT\MEDIA\MS_MMACM
Name: Audio Codecs
DriverNode #0:
Inf file is c:\windows\inf\wave.inf
Inf section is MS_MMACM
Driver description is Audio Codecs
Manufacturer name is (Standard system devices)
Provider name is Microsoft
Driver date is 7/1/2001
Driver version is 5.1.2535.0
Driver node rank is 0
Driver node flags are 00002240
Inf is digitally signed
ROOT\MEDIA\MS_MMDRV
Name: Legacy Audio Drivers
DriverNode #0:
Inf file is c:\windows\inf\wave.inf
Inf section is MS_MMDRV
Driver description is Legacy Audio Drivers
Manufacturer name is (Standard system devices)
Provider name is Microsoft
Driver date is 7/1/2001
Driver version is 5.1.2535.0
Driver node rank is 0
Driver node flags are 00002240
Inf is digitally signed
ROOT\MEDIA\MS_MMMCI
Name: Media Control Devices
DriverNode #0:
Inf file is c:\windows\inf\wave.inf
Inf section is MS_MMMCI
Driver description is Media Control Devices
Manufacturer name is (Standard system devices)
Provider name is Microsoft
Driver date is 7/1/2001
Driver version is 5.1.2535.0
Driver node rank is 0
Driver node flags are 00002240
Inf is digitally signed
ROOT\MEDIA\MS_MMVCD
Name: Legacy Video Capture Devices
DriverNode #0:
Inf file is c:\windows\inf\wave.inf
Inf section is MS_MMVCD
Driver description is Legacy Video Capture Devices
Manufacturer name is (Standard system devices)
Provider name is Microsoft
Driver date is 7/1/2001
Driver version is 5.1.2535.0
Driver node rank is 0
Driver node flags are 00002240
Inf is digitally signed
ROOT\MEDIA\MS_MMVID
Name: Video Codecs
DriverNode #0:
Inf file is c:\windows\inf\wave.inf
Inf section is MS_MMVID
Driver description is Video Codecs
Manufacturer name is (Standard system devices)
Provider name is Microsoft
Driver date is 7/1/2001
Driver version is 5.1.2535.0
Driver node rank is 0
Driver node flags are 00002240
Inf is digitally signed
5 matching device(s) found.
下列命令會 使用 DevCon Resources 作業來顯示配置給 Hdc 裝置安裝類別中裝置的資源。 這個類別包含 IDE 控制器。 等號 (=) 前面會加上 「hdc」 表示它是類別,而不是識別碼。
devcon resources =hdc
作為回應,DevCon 會列出配置給本機電腦上的 IDE 控制器的資源。
PCI\VEN_8086&DEV_244B&SUBSYS_00000000&REV_02\3&29E81982&0&F9
Name: Intel(r) 82801BA Bus Master IDE Controller
Device is currently using the following resources:
IO : ffa0-ffaf
PCIIDE\IDECHANNEL\4&37E53584&0&0
Name: Primary IDE Channel
Device is currently using the following resources:
IO : 01f0-01f7
IO : 03f6-03f6
IRQ : 14
PCIIDE\IDECHANNEL\4&37E53584&0&1
Name: Secondary IDE Channel
Device is currently using the following resources:
IO : 0170-0177
IO : 0376-0376
IRQ : 15
3 matching device(s) found.
下列命令會 使用 DevCon Resources 作業來列出配置給系統定時器的資源。 此命令會使用系統定時器 ACPI\PNP0100的硬體識別碼來指定裝置。
devcon resources *PNP0100
作為回應,DevCon 會顯示系統定時器的資源。
ROOT\*PNP0100\PNPBIOS_8
Name: System timer
Device has the following resources reserved:
IO : 0040-005f
IRQ : 0
1 matching device(s) found.
下列命令會使用 DevCon resources 命令中系統定時器的裝置實例識別碼。 at 字元 (@) 表示字串是裝置實例識別碼,而不是硬體識別碼或相容識別碼。
devcon resources "@ACPI\PNP0100\4&b4063f4&0"
下列命令會 使用 DevCon Stack 作業來搜尋磁碟區設定類別中的裝置,並顯示這些裝置的預期驅動程式堆疊。 等號 (=) 表示字串是類別名稱。
devcon stack =Volume
作為回應,DevCon 會顯示 Volume 類別中裝置的預期堆疊。 傳回的數據報含每個裝置的裝置實例識別碼和描述、裝置設定類別的 GUID 和名稱、上下篩選驅動程式的名稱,以及控制服務(如果有的話)。
STORAGE\VOLUME\1&30A96598&0&SIGNATURE32323533OFFSET271167600LENGTH6E00D0C00
Name: Generic volume
Setup Class: {71A27CDD-812A-11D0-BEC7-08002BE2092F} Volume
Class upper filters:
VolSnap
Controlling service:
(none)
STORAGE\VOLUME\1&30A96598&0&SIGNATURE32323533OFFSET7E00LENGTH27115F800
Name: Generic volume
Setup Class: {71A27CDD-812A-11D0-BEC7-08002BE2092F} Volume
Class upper filters:
VolSnap
Controlling service:
(none)
2 matching device(s) found.
除了上下篩選驅動程式之外,DevCon Stack 作業也會傳回裝置的安裝類別。 下列命令會尋找印表機埠介面的安裝類別,方法是尋找其裝置實例標識碼,然後使用裝置實例標識碼來尋找其安裝類別。
下列命令會使用 DevCon HwIDs 作業,使用印表機埠硬體識別碼中的片語 「LPT」 來尋找印表機埠介面的裝置實例識別碼。
devcon hwids *lpt*
作為回應,DevCon 會傳回裝置實例識別碼(以粗體文字顯示),以及印表機埠介面的硬體識別碼。
LPTENUM\MICROSOFTRAWPORT\5&CA97D7E&0&LPT1
Name: Printer Port Logical Interface
Hardware ID's:
LPTENUM\MicrosoftRawPort958A
MicrosoftRawPort958A
1 matching device(s) found.
下一個命令會 使用 DevCon Stack 作業來尋找裝置實例識別碼所代表裝置的裝置安裝類別。 字元 (@) 會將識別碼識別為裝置實例識別碼。 標識碼會以引號括住,因為它包含連字元。
devcon stack "@LPTENUM\MICROSOFTRAWPORT\5&CA97D7E&0&LPT1"
作為回應,DevCon 會顯示印表機埠介面的驅動程式堆疊,包括 類別。 顯示器會顯示印表機埠位於 System 類別中。
LPTENUM\MICROSOFTRAWPORT\5&CA97D7E&0&LPT1
Name: Printer Port Logical Interface
Setup Class: {4D36E97D-E325-11CE-BFC1-08002BE10318} System
Controlling service:
(none)
1 matching device(s) found.
下列命令會 使用 DevCon Stack 作業來顯示迷你埠驅動程式裝置的預期堆疊。 它會在 Net 安裝程式類別中搜尋其硬體識別碼或相容識別碼中有「迷你埠」的裝置。
請注意,此命令會先將搜尋限制為 Net setup 類別,然後尋找 「miniport」 字串。 它找不到 Net 安裝程式類別中以外的裝置。
devcon stack =net *miniport*
作為回應,DevCon 會顯示迷你埠驅動程式的預期堆疊。
ROOT\MS_L2TPMINIPORT\0000
Name: WAN Miniport (L2TP)
Setup Class: {4D36E972-E325-11CE-BFC1-08002BE10318} Net
Controlling service:
Rasl2tp
ROOT\MS_PPPOEMINIPORT\0000
Name: WAN Miniport (PPPOE)
Setup Class: {4D36E972-E325-11CE-BFC1-08002BE10318} Net
Controlling service:
RasPppoe
Lower filters:
NdisTapi
ROOT\MS_PPTPMINIPORT\0000
Name: WAN Miniport (PPTP)
Setup Class: {4D36E972-E325-11CE-BFC1-08002BE10318} Net
Controlling service:
PptpMiniport
Lower filters:
NdisTapi
ROOT\MS_PTIMINIPORT\0000
Name: Direct Parallel
Setup Class: {4D36E972-E325-11CE-BFC1-08002BE10318} Net
Controlling service:
Raspti
Lower filters:
PtiLink
4 matching device(s) found.
下列命令會 使用 DevCon Status 作業來尋找本機電腦上所有裝置的狀態。 然後,它會將狀態儲存在status.txt檔案中,以供記錄或更新版本檢閱。 命令會使用通配符 (*) 來代表所有裝置和重新導向字元 (>) 將輸出重新導向至status.txt檔案。
devcon status * > status.txt
尋找特定裝置狀態的最可靠方式是使用裝置的裝置實例標識碼。
下列命令會在 DevCon Status 命令中使用本機電腦上的 I/O 控制器裝置實例識別碼。 此命令包含裝置的裝置實例標識碼PCI\VEN_8086&DEV_1130&SUBSYS_00000000&REV_02\3&29E81982&0&0&00。 前置詞為標識碼的 at 字元 ,@會將字串識別為裝置實例識別碼。 標識碼必須以引號括住,因為它包含連字元。
devcon status "@PCI\VEN_8086&DEV_1130&SUBSYS_00000000&REV_02\3&29E81982&0&00"
作為回應,DevCon 會顯示 I/O 控制器的狀態。
PCI\VEN_8086&DEV_1130&SUBSYS_00000000&REV_02\3&29E81982&0&00
Name: Intel(R) 82815 Processor to I/O Controller - 1130
Driver is running.
1 matching device(s) found.
下列命令會 使用 DevCon Status 作業來顯示特定記憶體相關裝置的狀態。 它會搜尋下列裝置:
磁碟驅動器、GenDisk
CD-ROM 磁碟驅動器、GenCdRom
磁碟驅動器、FDC\GENERIC_FLOPPY_DRIVE
磁碟區、STORAGE\Volume
邏輯磁碟管理員、ROOT\DMIO
磁碟區管理員、ROOT\FTDISK
軟盤控制器、ACPI\PNP0700
在 命令中,每個標識碼會以空格分隔其他標識符。 請注意,GenDisk 和 GenCdRom 是相容的標識碼,而其他標識碼則是硬體識別碼。
devcon status GenDisk GenCdRom FDC\GENERIC_FLOPPY_DRIVE STORAGE\Volume ROOT\DMIO ROOT\FTDISK ACPI\PNP0700
作為回應,DevCon 會顯示每個裝置的狀態。
FDC\GENERIC_FLOPPY_DRIVE\1&3A2146F1&0&0
Name: Floppy disk drive
Driver is running.
IDE\CDROMSAMSUNG_DVD-ROM_SD-608__________________2.2_____\4&13B4AFD&0&0.0.0
Name: SAMSUNG DVD-ROM SD-608
Driver is running.
IDE\DISKWDC_WD204BA_____________________________16.13M16\4457572D414D373032313633393820312
0202020
Name: WDC WD204BA
Driver is running.
ROOT\DMIO\0000
Name: Logical Disk Manager
Driver is running.
ROOT\FLOPPYDISK\0000
Device has a problem: 28.
ROOT\FLOPPYDISK\0002
Device has a problem: 01.
ROOT\FLOPPYDISK\0003
Device has a problem: 01.
ROOT\FLOPPYDISK\0004
Device is currently stopped.
ROOT\FTDISK\0000
Name: Volume Manager
Driver is running.
STORAGE\VOLUME\1&30A96598&0&SIGNATUREEA1AA9C7OFFSET1770DF800LENGTH3494AEA00
Name: Generic volume
Driver is running.
STORAGE\VOLUME\1&30A96598&0&SIGNATUREEA1AA9C7OFFSET7E00LENGTH1770CFC00
Name: Generic volume
Driver is running.
11 matching device(s) found.
下列命令會使用 DevCon Find 作業來搜尋滑鼠裝置。 具體來說,命令會在計算機中搜尋硬體標識碼或相容標識碼包含 「mou.」 的裝置,而且找不到“moose” 驅動程式。
devcon find *mou*
在此情況下,DevCon 發現這兩個滑鼠裝置。
ROOT\*PNP0F03\1_0_21_0_31_0 : Microsoft PS/2 Mouse
ROOT\RDP_MOU\0000 : Terminal Server Mouse Driver
由於所有 DevCon 顯示作業也會尋找硬體識別碼,因此您可以使用任何顯示作業來搜尋硬體識別碼。 根據輸出中所需的內容選取作業。 例如,若要尋找本機計算機上滑鼠相關裝置所使用的設備驅動器,請提交下列命令。
devcon driverfiles *mou*
作為回應,DevCon 會尋找裝置並列出其驅動程式。
HID\VID_045E&PID_0039\6&DC36FDE&0&0000
Name: Microsoft USB IntelliMouse Optical
Driver installed from c:\windows\inf\msmouse.inf [HID_Mouse_Inst]. 2 file(s) used by d
river:
C:\WINDOWS\System32\DRIVERS\mouhid.sys
C:\WINDOWS\System32\DRIVERS\mouclass.sys
ROOT\RDP_MOU\0000
Name: Terminal Server Mouse Driver
Driver installed from c:\windows\inf\machine.inf [RDP_MOU]. 2 file(s) used by driver:
C:\WINDOWS\System32\DRIVERS\termdd.sys
C:\WINDOWS\System32\DRIVERS\mouclass.sys
2 matching device(s) found.
下列命令會使用 DevCon Find 作業,在本機電腦上顯示所有舊版裝置。 由於舊版裝置沒有硬體標識碼,因此您必須依其裝置實例標識碼(登錄路徑)、ROOT\LEGACY 或其安裝類別 LegacyDriver 來搜尋它們。
第一個命令會依裝置實例標識碼模式尋找舊版驅動程式。 標識符模式是以 字元 (@) 開頭,表示裝置實例標識碼,後面接著通配符 (*) 以尋找 ROOT\Legacy 子機碼中的所有裝置。
devcon find @root\legacy*
第二個命令會搜尋 LegacyDriver 類別中的所有裝置,以尋找舊版裝置。
devcon find =legacydriver
在此案例中,這兩個命令會產生相同的輸出,以尋找相同的 27 個舊版裝置。
ROOT\LEGACY_AFD\0000 : AFD Networking Support Environment
ROOT\LEGACY_BEEP\0000 : Beep
ROOT\LEGACY_DMBOOT\0000 : dmboot
ROOT\LEGACY_DMLOAD\0000 : dmload
ROOT\LEGACY_FIPS\0000 : Fips
ROOT\LEGACY_GPC\0000 : Generic Packet Classifier
ROOT\LEGACY_IPSEC\0000 : ipsec
ROOT\LEGACY_KSECDD\0000 : ksecdd
ROOT\LEGACY_MNMDD\0000 : mnmdd
ROOT\LEGACY_MOUNTMGR\0000 : mountmgr
ROOT\LEGACY_NDIS\0000 : ndis
ROOT\LEGACY_NDISTAPI\0000 : Remote Access NDIS TAPI Driver
ROOT\LEGACY_NDISUIO\0000 : NDIS Usermode I/O Protocol
ROOT\LEGACY_NDPROXY\0000 : NDProxy
ROOT\LEGACY_NETBT\0000 : netbt
ROOT\LEGACY_NULL\0000 : Null
ROOT\LEGACY_PARTMGR\0000 : PartMgr
ROOT\LEGACY_PARVDM\0000 : ParVdm
ROOT\LEGACY_RASACD\0000 : Remote Access Auto Connection Driver
ROOT\LEGACY_RDPCDD\0000 : RDPCDD
ROOT\LEGACY_RDPWD\0000 : RDPWD
ROOT\LEGACY_TCPIP\0000 : tcpip
ROOT\LEGACY_TDPIPE\0000 : TDPIPE
ROOT\LEGACY_TDTCP\0000 : TDTCP
ROOT\LEGACY_VGASAVE\0000 : VgaSave
ROOT\LEGACY_VOLSNAP\0000 : VolSnap
ROOT\LEGACY_WANARP\0000 : Remote Access IP ARP Driver
27 matching device(s) found.
下列命令會 使用 DevCon FindAll 作業,在 Net setup 類別的電腦上尋找所有裝置。 等號 (=) 表示 Net 是安裝類別,而不是識別碼。
devcon findall =net
作為回應,DevCon 會列出 Net 安裝程式類別中的下列七個裝置。 前六個是標準迷你埠驅動程式裝置。 第七個裝置 RAS 異步適配卡是軟體列舉裝置(SW\*),在需要之前未安裝。
PCI\VEN_10B7&DEV_9200&SUBSYS_00BE1028&REV_78\4&BB7B4AE&0&60F0: 3Com 3C920 Integrated Fast
Ethernet Controller (3C905C-TX Compatible)
ROOT\MS_L2TPMINIPORT\0000 : WAN Miniport (L2TP)
ROOT\MS_NDISWANIP\0000 : WAN Miniport (IP)
ROOT\MS_PPPOEMINIPORT\0000 : WAN Miniport (PPPOE)
ROOT\MS_PPTPMINIPORT\0000 : WAN Miniport (PPTP)
ROOT\MS_PTIMINIPORT\0000 : Direct Parallel
SW\{EEAB7790-C514-11D1-B42B-00805FC1270E}\ASYNCMAC : RAS Async Adapter
7 matching device(s) found.
下列命令會藉由執行DevCon Find命令與先前的DevCon FindAll命令相同的參數,來比較DevCon Find和DevCon FindAll作業。
devcon find =net
作為回應,DevCon 會在 Net 安裝程式類別中列出下列六個裝置。
PCI\VEN_10B7&DEV_9200&SUBSYS_00BE1028&REV_78\4&BB7B4AE&0&60F0: 3Com 3C920 Integrated Fast
Ethernet Controller (3C905C-TX Compatible)
ROOT\MS_L2TPMINIPORT\0000 : WAN Miniport (L2TP)
ROOT\MS_NDISWANIP\0000 : WAN Miniport (IP)
ROOT\MS_PPPOEMINIPORT\0000 : WAN Miniport (PPPOE)
ROOT\MS_PPTPMINIPORT\0000 : WAN Miniport (PPTP)
ROOT\MS_PTIMINIPORT\0000 : Direct Parallel
6 matching device(s) found.
可預測的是, 只會傳回目前安裝的裝置的 DevCon Find 命令不會列出軟體列舉的裝置,因為未安裝裝置。
下列命令會 使用DevCon ClassFilter 作業來顯示 DiskDrive 安裝類別的上層篩選驅動程式。 因為此命令不包含類別篩選運算符,DevCon 會顯示 類別的篩選驅動程式,但不會變更它們。
devcon classfilter DiskDrive upper
作為回應,DevCon 會顯示 DiskDrive 類別的上層篩選驅動程式,並確認它未變更它們。 在此情況下,顯示器會顯示 DiskDrive 安裝類別中的裝置使用PartMgr.sys上層篩選驅動程式。
Class filters unchanged.
PartMgr
下列命令會 使用 DevCon ClassFilter 作業,將虛構篩選Disklog.sys新增至 DiskDrive 安裝類別的上層篩選驅動程式清單。
此命令會使用 add-after (+) ClassFilter 運算符,在 PartMgr 驅動程式之後載入 Disklog 驅動程式,以便接收已處理PartMgr.sys的數據。
當命令啟動時,虛擬數據指標會放在第一個篩選驅動程式之前。 由於它不在特定驅動程式上,DevCon 會將 Disklog 驅動程式新增至篩選驅動程式清單的結尾。
此命令也會使用 /r 參數,如果有必要讓類別篩選條件變更生效,則會重新啟動系統。
devcon /r classfilter DiskDrive upper +Disklog
作為回應,DevCon 會顯示 DiskDrive 類別目前的上層篩選驅動程式。
Class filters changed. Class devices must be restarted for changes to take effect.
PartMgr
Disklog
如果您拼錯驅動程式名稱,或嘗試新增未安裝在系統上的驅動程式,命令會失敗。 除非驅動程式註冊為服務,否則 DevCon 不會新增驅動程式,也就是說,除非驅動程式在 Services 登錄子機碼中具有子機碼(HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services)。
下列命令會測試這項保護功能。 它會嘗試將 「Disklgg」 (而不是 “Disklog”) 新增至 DiskDrive 類別的上層篩選清單。 輸出示範命令失敗。
devcon /r classfilter DiskDrive upper +Disklgg
devcon failed.
下列命令會 使用 DevCon ClassFilter 作業,將虛構的篩選驅動程式MyFilter.sys新增至 DiskDrive 安裝類別的上層篩選驅動程式清單。 命令會將MyFilter.sys置於PartMgr.sys與Disklog.sys之間的載入順序。
devcon /r classfilter DiskDrive upper @Disklog -MyFilter
下列清單會顯示提交命令之前 DiskDrive 類別的篩選驅動程式。
PartMgr
Disklog
第一個子命令 @Disklog會使用定位運算子 (@) 將虛擬游標放在 Disklog 篩選驅動程式上。 第二個子命令 -MyFilter 會使用 add-before 運算符 (-) 在Disklog.sys之前新增MyFilter.sys。
此命令也會使用 /r 參數,如果有必要讓類別篩選條件變更生效,則會重新啟動系統。
定位運算子在此範例中很重要。 在 DevCon 處理任何類別篩選子命令之前,虛擬數據指標位於清單的開頭,而且不會放置在任何篩選驅動程式上。 如果您在游標不在驅動程式上時使用 add-before (+) 運算符,DevCon 會將驅動程式新增至清單的開頭。 如果您在游標不在驅動程式上時使用附加元件 (-) 運算符,則會將驅動程式新增至清單的結尾。
作為回應,DevCon 會顯示 DiskDrive 類別目前的上層篩選驅動程式。
Class filters changed. Class devices must be restarted for changes to take effect.
PartMgr
MyFilter
Disklog
您也可以使用下列命令來新增 MyFilter 驅動程式,並將它放在 PartMgr 和 Disklog 之間。 在此範例中,第一個子命令 @PartMgr會將虛擬游標放在 PartMgr 篩選驅動程式上。 第二個子命令 +MyFilter 會使用 add-after 運算符 (+) 在 PartMgr 之後新增MyFilter.sys。
devcon /r classfilter DiskDrive upper @PartMgr +MyFilter
下列命令會 使用DevCon ClassFilter 作業,在DiskDrive安裝類別的篩選驅動程式清單中,將MyFilter.sys的原始複本取代為新的改良版本MyNewFilter.sys。
devcon /r classfilter DiskDrive upper !MyFilter +MyNewFilter
下列清單會顯示提交命令之前 DiskDrive 類別的篩選驅動程式。
PartMgr
MyFilter
Disklog
第一個子命令會使用 delete 運算子 (!) 從 DiskDrive 類別的上層篩選驅動程式清單中刪除 MyFilter。 (這不會影響 C:\Windows\System32\Drivers 目錄中的MyFilter.sys檔案。
第二個子命令會使用附加元件運算元 (+) 將新的篩選驅動程式放在已刪除驅動程式佔用的位置。 因為 delete 運算符會將游標留在已刪除篩選所佔用的位置,因此 add-before () 和 add-after (-+) 運算子具有相同的效果。
此命令也會使用 /r 參數,如果有必要讓類別篩選條件變更生效,則會重新啟動系統。
作為回應,DevCon 會顯示 DiskDrive 類別的新類別篩選組態。
Class filters changed. Class devices must be restarted for changes to take effect.
PartMgr
MyNewFilter
Disklog
下列命令會 使用DevCon ClassFilter 作業來變更 DiskDrive 安裝類別的篩選驅動程式順序。 具體來說,它會反轉第二和第三個篩選驅動程序的順序。
devcon /r classfilter DiskDrive upper !Disklog =@PartMgr +Disklog
下列清單會顯示提交命令之前 DiskDrive 類別的篩選驅動程式。 它也會顯示命令的預期結果。
之前 | 之後 |
---|---|
PartMgr | PartMgr |
MyNewFilter | Disklog |
Disklog | MyNewFilter |
第一個子命令會使用 delete 運算子 (!) 從清單中刪除 Disklog。 第二個子命令會使用 start 運算子 (=) 將虛擬游標移回起始位置,然後使用定位運算符 (@) 將游標放在 PartMgr 驅動程式上。 開始運算子是必要的,因為虛擬數據指標只會向前移動清單。 最後的子命令會使用附加元件運算子 (+) 在 PartMgr 之後新增 Disklog。
作為回應,DevCon 會顯示 DiskDrive 類別的新類別篩選組態。
Class filters changed. Class devices must be restarted for changes to take effect.
PartMgr
Disklog
MyNewFilter
下列命令會 使用 DevCon Enable 作業來啟用已停用的可程式化插斷控制器,以更正系統問題。 因為控制器硬體識別碼 *PNP0000包含星號,所以命令會使用單引號字元 (') 指示DevCon精確尋找命令中指定的硬體識別碼。 否則,星號會解譯為通配符。
devcon enable '*PNP0000
作為回應,DevCon 會顯示裝置的裝置實例標識碼,並說明您必須重新啟動系統才能啟用裝置。
ACPI\PNP0000\4&B4063F4&0 : Enabled on reboot
Not all of 1 device(s) enabled, at least one requires reboot to complete the operation.
您可以手動重新啟動系統,或使用 DevCon Reboot 作業來回應。
下列命令會將 /r 參數新增至上一個命令。 只有在需要重新啟動才能完成作業時,/r 參數才會重新啟動系統。
devcon /r enable '*PNP0000
作為回應,DevCon 會啟用裝置,然後重新啟動系統,讓啟用生效。
當系統啟動時,請使用 DevCon 狀態命令來確認裝置已啟用。
devcon status '*PNP0000
ACPI\PNP0000\4&B4063F4&0
Name: Programmable interrupt controller
Driver is running.
下列命令會在 DevCon Enable 命令中指定 Printer 安裝類別,以啟用電腦上的所有印表機裝置。 此命令包含 /r 參數,如果需要讓啟用生效,則會重新啟動系統。
devcon /r enable =Printer
作為回應,DevCon 會顯示它在 Printer 類別中找到的印表機裝置實例識別碼,並報告它已啟用。 雖然命令包含 /r 參數,但系統並未重新啟動,因為不需要重新啟動才能啟用印表機。
LPTENUM\HEWLETT-PACKARDDESKJET_1120C\1&7530F08&0&LPT1.4 : Enabled
1 device(s) enabled.
下列命令會使用 DevCon Disable 作業來停用本機電腦上的 USB 裝置。 它會使用硬體標識碼模式來識別裝置(USB*)。 此模式會比對任何硬體標識碼或相容標識碼以 「USB」 開頭的裝置。此命令包含 /r 參數,如果需要讓停用生效,則會重新啟動系統。
注意 使用標識碼模式停用裝置之前,請先判斷哪些裝置會受到影響。 若要這樣做,請使用顯示命令中的模式,例如 devcon 狀態 USB\* 或 devcon hwids USB\*。
devcon /r disable USB*
作為回應,DevCon 會顯示USB裝置的裝置實例標識碼,並回報其已停用。 雖然命令包含 /r 參數,但系統並未重新啟動,因為不需要重新啟動才能停用裝置。
USB\ROOT_HUB\4&2A40B465&0
: Disabled
USB\ROOT_HUB\4&7EFA360&0
: Disabled
USB\VID_045E&PID_0039\5&29F428A4&0&2
: Disabled
3 device(s) disabled.
下列命令會使用 DevCon Disable 作業來停用本機電腦上的 USB 裝置。 此命令會依裝置實例標識碼來識別裝置,如每個標識符前面的字元 (@) 所指示。 每個裝置實例標識碼會以空格與其他裝置實例標識符分開。
此外,因為裝置實例標識碼包含連字元 (&),所以它們會以引號括住。 此命令包含 /r 參數,如果需要讓停用生效,則會重新啟動系統。
devcon /r disable "@USB\ROOT_HUB\4&2A40B465&0" "@USB\ROOT_HUB\4&7EFA360&0" "@USB\VID_045E&PID_0039\5&29F428A4&0&2"
作為回應,DevCon 會顯示USB裝置的裝置實例標識碼,並回報其已停用。 雖然命令包含 /r 參數,但系統並未重新啟動,因為不需要重新啟動才能停用裝置。
USB\ROOT_HUB\4&2A40B465&0
: Disabled
USB\ROOT_HUB\4&7EFA360&0
: Disabled
USB\VID_045E&PID_0039\5&29F428A4&0&2
: Disabled
3 device(s) disabled.
下列命令會 使用 DevCon Update 作業,將系統上通訊埠的目前設備驅動器取代為 test.inf 檔案中指定的測試驅動程式。 此命令只會影響整個硬體識別碼為 *PNP0501 (包括星號) 的裝置。
您可以使用此命令,將系統上已簽署的驅動程式取代為替代驅動程式進行測試或疑難解答,或將裝置與相同驅動程式的最新版本產生關聯。
devcon update c:\windows\inf\test.inf *PNP0501
作為回應,DevCon 會顯示 硬體安裝 警告,說明驅動程式尚未通過 Windows 標誌測試。 如果您選取對話方塊上的 [ 繼續繼續] 按鈕,安裝會繼續。
然後,DevCon 會顯示下列成功訊息。
Updating drivers for *PNP0501 from c:\windows\inf\test.inf.
Drivers updated successfully.
您也可以使用 DevCon UpdateNI 作業、DevCon Update 作業的非互動版本來更新驅動程式。 DevCon UpdateNI 作業與 DevCon Update 作業相同,不同之處在於它會隱藏需要回應的所有使用者提示,並假設預設回應提示。
下列命令會 使用 DevCon UpdateNI 作業來安裝測試驅動程式。
devcon updateni c:\windows\inf\test.inf *PNP0501
在此情況下,DevCon 不會顯示 硬體安裝 警告。 相反地,它會假設預設回應停止 安裝。 因此,DevCon 無法更新驅動程式並顯示失敗訊息。
Updating drivers for *PNP0501 from c:\windows\inf\test.inf.
devcon failed.
下列命令會 使用 DevCon Install 作業,在本機電腦上安裝鍵盤裝置。 此命令包含裝置 INF 檔案的完整路徑(keyboard.inf)和硬體識別碼 (*PNP030b)。
devcon /r install c:\windows\inf\keyboard.inf *PNP030b
作為回應,DevCon 會報告它已安裝裝置,也就是說,它已為新裝置建立裝置節點,並更新裝置的驅動程式檔案。
Device node created. Install is complete when drivers files are updated...
Updating drivers for *PNPO30b from c:\windows\inf\keyboard.inf
Drivers updated successfully.
下列範例示範如何在自動安裝 Microsoft Windows XP 期間安裝 Microsoft 迴圈配接器。
若要在自動安裝期間安裝此裝置,請從將下列檔案新增至磁碟片:devcon.exe和 netloop.inf (C:\Windows\inf\netloop.inf)。
然後,在 自動安裝檔案的 [GUIRunOnce] 區段中,新增下列 DevCon 命令:
a:\devcon /r install a:\Netloop.inf '*MSLOOP
此命令會使用其硬體識別碼 *MSLOOP 來識別回送適配卡。 “*MSLOOP” 前面的單引號字元會告訴 DevCon 以字面方式解譯字串,也就是將星號解譯為硬體標識碼的一部分,而不是通配符。
命令也會指定 DevCon 在安裝中使用 Netloop.inf 檔案(在磁碟上)。 只有在需要重新啟動才能完成安裝時,/r 參數才會重新啟動計算機。
最後,將網路組態設定新增至自動安裝檔案,然後執行自動安裝。
下列命令會 使用 DevCon Remove 作業,從電腦移除 所有 USB 裝置。 它會使用裝置實例標識符模式來識別裝置,該模式符合以 “USB\” 字串開頭的任何裝置實例標識碼(登錄路徑)。 at 字元 (@) 會區分裝置實例識別碼與硬體識別碼或相容的標識碼。 此命令也包含 /r 參數,如果必須讓移除程式生效,則會重新啟動系統。
警告
使用模式移除任何裝置之前,請先判斷受影響的裝置。 若要這樣做,請在顯示命令中使用 模式,例如 devcon status @usb\*
或 devcon hwids @usb\*
。
devcon /r remove @usb\*
作為回應,DevCon 會顯示其已移除之裝置的裝置實例標識碼。
USB\ROOT_HUB\4&2A40B465&0 : Removed
USB\ROOT_HUB\4&7EFA360&0 : Removed
USB\VID_045E&PID_0039\5&29F428A4&0&2 : Removed
3 device(s) removed.
下列命令會 使用 DevCon Remove 作業,從本機電腦卸載 NDISWAN 迷你埠驅動程式。 命令會指定 Net 類別,然後在類別中指定硬體識別碼或相容標識碼包含 「ndiswan」 的裝置,以精簡搜尋。此命令也包含 /r 參數,如果需要重新啟動,就會重新啟動系統,讓移除程式生效。
警告 在使用模式移除任何裝置之前,請先判斷哪些裝置會受到影響。 若要這樣做,請在顯示命令中使用 模式,例如 devcon status =net *ndiswan
或 devcon hwids =net *ndiswan*
。
devcon /r remove =net *ndiswan*
作為回應,DevCon 會顯示它所移除之裝置的裝置實例標識碼。
ROOT\MS_NDISWANIP\0000 : Removed 1 device(s) removed.
下列命令會 使用 DevCon Rescan 作業來掃描本機電腦是否有新裝置。
devcon rescan
作為回應,DevCon 會報告其已掃描系統,但找不到任何新裝置。
Scanning for new hardware.
Scanning completed.
下列命令會 使用 DevCon Restart 作業來重新啟動本機電腦上的回送適配卡。 命令會將搜尋限制為 Net 安裝程式類別,並在該類別內指定回送適配卡 @'ROOT\*MSLOOP\0000 的裝置實例標識碼。 at 字元 (@) 會將字串識別為裝置實例識別碼。 要求常值搜尋的單引號字元 (') 會防止DevCon將標識碼中的星號解譯為通配符。
devcon restart =net @'ROOT\*MSLOOP\0000
作為回應,DevCon 會顯示裝置的裝置實例標識碼,並報告結果。
ROOT\*MSLOOP\0000 : Restarted
1 device(s) restarted.
下列命令會 使用DevCon Reboot 作業來重新啟動本機電腦上的作業系統,並將重新啟動與硬體安裝產生關聯。 不同於 /r 參數,DevCon Reboot 作業並不相依於其他作業的傳回碼。
您可以將此指令包含在需要系統重新啟動的文稿和批次處理檔中。
devcon reboot
回應中,DevCon 會顯示一則訊息,指出它正在重新啟動電腦(重新啟動本機計算機)。
DevCon 會使用標準 ExitWindowsEx 函式重新啟動。 如果使用者在計算機上開啟檔案,或程式不會關閉,系統不會重新啟動,直到使用者響應系統提示關閉檔案或結束程序為止。
下列命令會 使用 DevCon SetHwID 作業,將硬體標識碼、蜂鳴聲指派給舊版嗶聲裝置。
此命令會使用裝置的裝置實例標識碼 ROOT\LEGACY_BEEP\0000,因為嗶嗶舊版裝置沒有硬體標識碼或相容的標識符。 它會使用 at 字元 (@) 表示字串是裝置實例識別碼。
命令不會使用任何符號參數來放置標識碼。 根據預設,DevCon 會將新的硬體識別元新增至硬體標識碼清單的結尾。 在此情況下,因為裝置沒有其他硬體標識碼,因此放置無關緊要。
devcon sethwid @ROOT\LEGACY_BEEP\0000 := beep
作為回應,DevCon 會顯示一則訊息,指出它已將蜂鳴聲新增至裝置的硬體標識符清單。 它也會顯示產生的硬體識別碼清單。 在此情況下,清單中只有一個硬體標識符。
ROOT\LEGACY_BEEP\0000 : beep
Modified 1 hardware ID(s).
下列命令會 使用 DevCon SetHwID 作業,將硬體識別碼舊版新增至所有舊版裝置的硬體標識符清單。
此命令會 - 使用符號參數,將新的硬體識別元新增至裝置的硬體標識碼清單結尾,以防已為其中一個裝置建立慣用的硬體標識符。 它也會使用裝置實例標識符模式 @ROOT\LEGACY\*
來識別電腦上的舊版裝置,也就是裝置實例標識符開頭 ROOT\LEGACY*
為的所有裝置。
devcon sethwid @ROOT\LEGACY* := -legacy
作為回應,DevCon 會顯示所有受影響裝置所產生的硬體標識碼清單。
ROOT\LEGACY_AFD\0000 : legacy
ROOT\LEGACY_BEEP\0000 : beep,legacy
ROOT\LEGACY_CRCDISK\0000 : legacy
ROOT\LEGACY_DMBOOT\0000 : legacy
ROOT\LEGACY_DMLOAD\0000 : legacy
ROOT\LEGACY_FIPS\0000 : legacy
...
ROOT\LEGACY_WANARP\0000 : legacy
Modified 27 hardware ID(s).
將相同的硬體識別碼指派給一組裝置之後,您可以使用其他 DevCon 作業,在單一命令中檢視和變更裝置。
例如,下列命令會顯示所有舊版裝置的狀態。
devcon status legacy
下列命令會使用 DevCon SetHwID 作業,從所有舊版裝置的硬體識別碼清單中刪除舊版硬體識別碼。
此命令會使用舊版硬體標識碼來識別具有該硬體標識碼的所有裝置。 然後,它會使用 ! 符號參數來刪除 舊版 硬體識別符。
devcon sethwid legacy := !legacy
作為回應,DevCon 會顯示所有受影響裝置所產生的硬體標識碼清單。
ROOT\LEGACY_AFD\0000 :
ROOT\LEGACY_BEEP\0000 : beep
ROOT\LEGACY_CRCDISK\0000 :
ROOT\LEGACY_DMBOOT\0000 :
ROOT\LEGACY_DMLOAD\0000 :
ROOT\LEGACY_FIPS\0000 :
...
ROOT\LEGACY_WANARP\0000 :
Modified 27 hardware ID(s).
下列範例系列示範如何使用DevCon SetHwID 作業的不同功能。
此系列使用虛構裝置 DeviceX 搭配裝置實例標識碼 ROOT\DeviceX\0000。 使用 DevCon 之前,裝置具有下列硬體識別符清單:
Hw3 Hw4
下列命令會+使用 符號將 Hw1 和 Hw2 新增至 DeviceX 硬體識別碼清單的開頭。 因為 Hw2 已經出現在清單中,所以它已移動,不會新增。 命令會依裝置實例標識碼來識別裝置,如標識符前面的字元 (@) 所指示。
devcon sethwid @ROOT\DEVICEX\0000 := +Hw1 Hw2
作為回應,DevCon 會顯示裝置的新硬體標識符清單。 請注意, Hw1 和 Hw2 會以指定的順序出現在清單的開頭。
ROOT\DEVICEX\0000 : Hw1,Hw2,Hw3,Hw4
Modified 1 hardware ID(s).
此外,DevCon 會報告它修改了一個硬體標識符清單,也就是一個裝置的硬體標識符清單。
下列命令會使用 ! 符號來刪除 Hw1 硬體識別碼。 然後,它會列出沒有符號參數的硬體標識碼 Hw5。 如果沒有符號參數,SetHwID 會將硬體識別元新增至裝置的硬體標識碼清單結尾。
此命令示範,不同於 DevCon SetHwID 作業的其他符號參數,! 符號只會套用至其前置的硬體識別碼。
devcon sethwid @ROOT\DeviceX\0000 := !Hw1 Hw5
作為回應,DevCon 會顯示 DeviceX 產生的硬體標識碼清單。
ROOT\DEVICEX\0000 : Hw2,Hw3,Hw4,Hw5
Modified 1 hardware ID(s).
下列命令會使用 = 參數,將 DeviceX 清單中的所有硬體識別碼取代為單一硬體識別碼 DevX。
devcon sethwid @ROOT\DeviceX\0000 := =DevX
作為回應,DevCon 會顯示 DeviceX 產生的硬體標識碼清單。
ROOT\DEVICEX\0000 : DevX
Modified 1 hardware ID(s).
成功訊息指出 DevCon 已修改一個裝置的硬體識別碼。
下列範例示範如何使用DevCon更新電腦上的HAL。 在此範例中,測試人員想要以多處理器 APCI APIC HAL 取代最適合電腦的單處理器 APCI APIC HAL,以供測試之用。
第一個命令會使用 DevCon SetHwID 作業,將 HAL 的硬體識別碼從 acpiapic_up、單處理器 HA 的硬體識別碼變更為 acpiapic_mp多處理器 HAL 的硬體識別碼。
您必須變更硬體識別碼,因為 HAL 的 INF 檔案同時包含單處理器和多處理器 HAL 的驅動程式。 系統會根據裝置的硬體標識碼,從 INF 檔案中選取最適當的驅動程式。 如果您未變更硬體識別碼, 則 DevCon Update 命令只會重新安裝單處理器 HAL 驅動程式。
在下列命令中,命令會依實例標識碼 ROOT\ACPI_HAL\0000 識別 HAL,如標識符前面的字元所 @ 指示。 此命令會+使用 字元來acpiapic_mp HAL 清單中的第一個硬體識別碼。 然後,它會使用 ! 字元,從 HAL 的識別碼清單中刪除 acpiapic_up 硬體識別碼。
devcon sethwid @ROOT\ACPI_HAL\0000 := +acpiapic_mp !acpiapic_up
作為回應,DevCon 會顯示下列 HAL 的新硬體識別符清單。
ROOT\ACPI_HAL\0000 : acpiapic_mp
Modified 1 hardware ID(s).
下列命令會 使用 DevCon Update 作業來更新 HAL 的驅動程式。
devcon update c:\windows\inf\hal.inf acpiapic_mp
然後,DevCon 會顯示下列成功訊息。
Updating drivers for acpiapic_mp from c:\windows\inf\hal.inf.
Drivers updated successfully.
下列範例示範如何使用 DevCon 在驅動程式存放區中新增、刪除及顯示第三方 (OEM) 驅動程式套件。
第一個 命令 DevCon Dp_add 命令會將 WDK 中「烤箱」範例驅動程式的 INF 檔案複製到驅動程式存放區,也就是 %Windir%\inf 目錄。 此命令包含適用於烤箱範例驅動程式之 INF 檔案的完整路徑。
此命令適用於第三方 (OEM) 驅動程式和裝置,但您可以使用「烤箱」範例來測試命令。
devcon dp_add C:\WinDDK\5322\src\general\toaster\inf\i386\toaster.inf
作為回應,DevCon 報告它已將烤箱 INF 檔案新增至驅動程式存放區,並將它命名為 Oem2.inf。
Driver Package 'oem2.inf' added.
將它複製到驅動程式存放區之前,Windows 會將 INF 檔案的二進位版本與驅動程式存放區中的 INF 檔案二進位版本進行比較,以確定它不會新增重複的檔案。 例如,如果您重複 命令將 Toaster.inf 新增至驅動程式存放區,DevCon 不會建立新的 OEM*.inf 檔案。 它只會報告現有檔案的名稱,如下列 DevCon 輸出所示。
devcon dp_add C:\WinDDK\5322\src\general\toaster\inf\i386\toaster.inf
Driver Package 'oem2.inf' added.
devcon dp_add C:\WinDDK\5322\src\general\toaster\inf\i386\toaster.inf
Driver Package 'oem2.inf' added.
若要從驅動程式存放區移除烤箱驅動程式的驅動程式套件,您必須使用驅動程式的 OEM*.inf 檔名。 若要尋找驅動程式的檔名,請使用 DevCon Dp_enum 命令。
下列命令會列出所有 OEM 驅動程式套件及其幾個屬性。
devcon dp_enum
作為回應,DevCon 會產生下列顯示:
c:\WinDDK\5322\tools\devcon\i386>devcon dp_enum
The following 3rd party Driver Packages are on this machine:
oem2.inf
Provider: Microsoft
Class: unknown
這項資訊表示 Microsoft 提供的驅動程式套件具有未指定裝置類別 (Toaster) 的名稱為 OEM2.inf。 您可以使用這項資訊來刪除與檔案相關聯的驅動程式套件。
下列命令會從驅動程式存放區刪除 OEM2.inf 檔案,以及其相關聯的先行編譯 INF (.pnf) 和目錄 (.cat) 檔案。 此命令會使用 OEM*.inf 檔名。
devcon dp_delete oem2.inf
作為回應,DevCon 會顯示訊息,指出命令成功:
Driver Package 'oem2.inf' deleted.
DevCon Dp_delete 命令中需要 OEM*.inf 檔名。 如果您嘗試使用 INF 檔案的原始名稱,命令會失敗,如下列 DevCon 輸出所示。
devcon dp_delete C:\WinDDK\5322\src\general\toaster.inf
Deleting the specified Driver Package from the machine failed.
devcon failed.
訓練
模組
Troubleshoot device driver failures - Training
This module focuses on the role of device drivers and troubleshooting problems that pertain to them.