【VS开发】设备控制台 (DevCon.exe) 示例

时间:2023-12-05 11:00:14

设备控制台 (DevCon.exe) 示例

本部分提供以下设备控制台 (DevCon.exe) 命令的示例:

DevCon
HwIDs

示例 1:查找所有硬件 ID

示例 2:使用模式查找硬件 ID

示例 3:使用类查找硬件 ID

DevCon
Classes

示例 4:列出本地计算机上的类

示例 5:列出远程计算机上的类

DevCon
ListClass

示例 6:列出设备安装程序类中的设备

示例 7:列出远程计算机上多个类中的设备

DevCon
DriverFiles

示例 8:列出所有驱动程序文件

示例 9:列出特定设备的驱动程序文件

DevCon
DriverNodes

示例 10:通过硬件 ID 模式列出驱动程序包

示例 11:通过设备实例 ID 模式列出驱动程序包

DevCon
Resources

示例 12:列出某个设备类的资源

示例 13:通过 ID 列出远程计算机上设备的资源

DevCon
Stack

示例 14:显示存储设备的驱动程序堆栈

示例 15:查找设备的安装程序类

示例 16:显示远程计算机上相关设备的堆栈

DevCon
Status

示例 17:显示本地计算机上所有设备的状态

示例 18:通过设备实例 ID 显示设备的状态

示例 19:显示远程计算机上相关设备的状态

DevCon
Find

示例 20:通过硬件 ID 模式查找设备

示例 21:通过设备实例 ID 或类查找设备

DevCon
FindAll

示例 22:查找安装程序类中的设备(查找全部)

DevCon
ClassFilter

示例 23:显示某个安装程序类的筛选器驱动程序

示例 24:向某个安装程序类中添加筛选器驱动程序

示例 25:在类列表中插入筛选器驱动程序

示例 26:替换筛选器驱动程序

示例 27:更改筛选器驱动程序的顺序

DevCon
Enable

示例 28:启用特定设备

示例 29:通过类启用设备

DevCon
Disable

示例 30:通过 ID 模式禁用设备

示例 31:通过设备实例 ID 禁用设备

DevCon
Update and UpdateNI

示例 32:更新通信端口的驱动程序

示例 44:强制更新 HAL

DevCon
Install

示例 33:安装设备

示例 34:使用无人参与安装来安装设备

DevCon
Remove

示例 35:通过设备实例 ID 模式删除设备

示例 36:删除特定的网络设备

DevCon
Rescan

示例 37:扫描计算机中的新设备

DevCon
Restart

示例 38:重新启动设备

DevCon
Status

示例 39:重新启动本地计算机

DevCon
SetHwID

示例 40:为旧设备分配硬件 ID

示例 41:为远程计算机上的所有旧设备添加硬件 ID

示例 42:从远程计算机上的所有旧设备中删除硬件 ID

示例 43:添加、删除和替换硬件 ID

示例 44:强制更新 HAL

DevCon
dp_add、dp_deleted、dp_enum

示例 45:添加和删除驱动程序包

示例
1:查找所有硬件 ID

由于 DevCon 操作使用 ID 和 ID 模式来标识设备,因此使用 DevCon 的第一个常用步骤就是为计算机上的设备创建一个硬件 ID 参考文件。

以下命令使用 DevCon HwIDs 操作,该操作返回 ID 以及设备描述。该命令使用通配符 (*) 来表示本地计算机上的所有设备。

devcon hwids *

由于输出较长并且重复使用,因此将输出保存在文本文件中以供参考。

以下命令使用通配符 (*) 来表示计算机上的所有设备。该命令使用重定向字符 (>) 将该命令输出保存在 hwids.txt 文件中。

devcon hwids * > hwids.txt

以下命令查找远程计算机 Server01 上设备的硬件 ID。该命令使用 /m 参数来指定远程计算机的名称。该命令将输出重定向到 server01_hwids.txt 文件以供日后参考。

注意   除非用户在此远程计算机上具有所需的权限,否则该命令将会失败。若要在远程计算机上运行 DevCon 命令,组策略设置必须允许即插即用服务在远程计算机上运行。在运行 Windows Vista 和 Windows 7 的计算机上,默认情况下组策略将禁止对此服务的远程访问。在运行 Windows 驱动程序工具包 (WDK) 8.1 和 Windows 驱动程序工具包 (WDK) 8 的计算机上,远程访问不可用。
devcon /m:\\server01 hwids * > server01_hwids.txt

示例
2:使用模式查找硬件 ID

若要查找某个特定设备的硬件 ID,请输入硬件 ID 或模式、兼容的 ID 或模式、设备实例 ID 或模式或者设备安装程序类的名称。

以下命令使用 DevCon HwIDs 操作和模式来查找计算机上软盘驱动器的硬件 ID。(用户假定模式出现在其中一个设备标识符中。)该命令使用通配符 (*) 来表示任何 ID 中可能位于单词“floppy”之前或之后的所有字符。

devcon hwids *floppy*

在响应中,DevCon 显示计算机上软盘驱动器的设备实例 ID、硬件 ID 以及兼容的 ID。可以在后续的 DevCon 命令中使用这些 ID。

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”出现在计算机上唯一一个设备的硬件 ID 或兼容的 ID 中。如果它在多个设备的 ID 中出现,那么其 ID 中包含“floppy”的所有设备都会出现在输出中。

示例
3:使用类查找硬件 ID

以下命令使用 DevCon HwIDs 操作和设备安装程序类来查找“端口”设备安装程序类中所有设备的硬件 ID。类名称前面的等号 (=) 表示它是一个类,而不是
ID。

devcon hwids =ports

在响应中,DevCon 显示端口安装程序类中三个设备的硬件 ID 以及兼容的 ID。

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.

示例
4:列出本地计算机上的类

由于 DevCon 操作可以使用设备安装程序类来标识设备,因此它对于创建计算机上设备的设备安装程序类的参考文件非常有用。

以下命令使用 DevCon Classes 操作,该操作返回计算机上所有类的列表和描述。

devcon classes

由于输出较长并且重复使用,因此将输出保存在文本文件中以供参考。

以下命令显示计算机上的所有设备类。该命令使用重定向字符 (>) 将该命令输出保存在 classes.txt 文件中。

devcon classes > classes.txt

示例
5:列出远程计算机上的类

以下命令使用 DevCon Classes 操作列出远程计算机 Server01 上的设备安装程序类:

devcon /m:\\server01 classes

由于输出较长并且重复使用,因此将输出保存在文本文件中以供参考。

以下命令使用重定向字符 (>) 将该命令输出保存在 server01_classes.txt 文件中。

devcon /m:\\server01 classes > server01_classes.txt

示例
6:列出设备安装程序类中的设备

以下命令使用 DevCon ListClass 操作列出 Net 中的设备、网络适配器的设备安装程序类。

devcon listclass net

在响应中,DevCon 显示 Net 安装程序类中每个设备的设备实例 ID 和描述。

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 安装程序类中设备的硬件 ID。以下命令使用 DevCon HwIDs 操作列出 Net 安装程序类中的设备。在 DevCon HwIDs 命令中,类名称前面有一个等号
(=) 用于表示它是一个类,不是 ID。

devcon hwids =net

所得到的显示列出 Net 类中的设备并且包含该类中设备的设备实例 ID、硬件 ID 以及兼容的 ID。

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.

示例
7:列出远程计算机上多个类中的设备

以下命令使用 DevCon ListClass 操作列出远程计算机 Server01 上 DiskDrive、CDROM 和 TapeDrive 类中的设备。

devcon /m:\\server01 listclass diskdrive cdrom tapedrive

在响应中,DevCon 显示此远程计算机上这些类中的设备。

Listing 1 device(s) for setup class "DiskDrive" (Disk drives) on \\server01.
IDE\DISKWDC_WD204BA_____________________________16.13M16\4457572D414D3730323136333938203120202020: WDC WD204BA
Listing 1 device(s) for setup class "CDROM" (DVD/CD-ROM drives) on \\server01.
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) on \\server01.

示例
8:列出所有驱动程序文件

以下命令使用 DevCon DriverFiles 操作列出系统上的设备使用的驱动程序的文件名。该命令使用通配符 (*) 来表示系统上的所有设备。由于输出量大,因此该命令使用重定向字符
(>) 将输出重定向到参考文件 driverfiles.txt。

devcon driverfiles * > driverfiles.txt

示例
9:列出特定设备的驱动程序文件

以下命令使用 DevCon DriverFiles 操作搜索本地计算机上的鼠标设备使用的设备驱动程序。该命令通过硬件 ID HID\Vid_045e&Pid_0039&Rev_0121
来标识设备。硬件 ID 包含在引号中,因为它包含 & 字符 (&)。

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.

示例
10:通过硬件 ID 模式列出驱动程序包

以下命令使用 DevCon DriverNodes 命令和 ID 模式来列出软件枚举的设备的驱动程序节点。模式对于查找可能不在同一安装程序类中的类似设备的信息非常有用。

以下命令使用 ID 模式 sw* 来指定其硬件 ID 或兼容的 ID 以“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.

示例
11:通过设备实例 ID 模式列出驱动程序包

以下命令使用 DevCon DriverNodes 操作列出其设备实例 ID 以“ROOT\MEDIA”开头的所有设备的驱动程序包(即,位于 Enum\Root\Media 注册表子项中的设备)。该命令使用
at 字符 (@) 指示短语位于设备实例 ID 中。

devcon drivernodes @ROOT\MEDIA*

在响应中,DevCon 显示其设备实例 ID 以“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.

示例
12:列出某个设备类的资源

以下命令使用 DevCon Resources 操作显示分配给 Hdc 设备安装程序类中设备的资源。该类包含 IDE 控制器。“hdc”前面的等号 (=)
表示它是一个类,而不是 ID。

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.

示例
13:通过 ID 列出远程计算机上设备的资源

以下命令使用 DevCon Resources 操作列出分配给远程计算机 Server01 上系统计时器的资源。该命令使用系统计时器的硬件 ID ACPI\PNP0100 来指定设备。

devcon /m:\\Server01 resources *PNP0100

在响应中,DevCon 显示 Server01 系统计时器的资源。

ROOT\*PNP0100\PNPBIOS_8
Name: System timer
Device has the following resources reserved:
IO : 0040-005f
IRQ : 0
1 matching device(s) found on \\server01.

以下命令使用 DevCon 资源命令中远程系统计时器的设备实例 ID。at 字符 (@) 表示此字符串是一个设备实例 ID,而不是硬件 ID 或兼容的 ID。

devcon /m:\\Server01 resources @ACPI\PNP0100\4&b4063f4&0

示例
14:显示存储设备的驱动程序堆栈

以下命令使用 DevCon Stack 操作搜索 Volume 安装程序类中的设备并显示这些设备的预期驱动程序堆栈。等号 (=) 表示该字符串是类名称。

devcon stack =Volume

在响应中,DevCon 显示 Volume 类中设备的预期堆栈。返回的数据包括每个设备的设备实例 ID 和描述、此设备安装程序类的 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.

示例
15:查找设备的安装程序类

DevCon Stack 操作除了返回上一级和下一级筛选器驱动程序之外,还返回设备的安装程序类。以下命令通过查找其设备实例 ID 查找打印机端口接口的安装程序类,然后使用设备实例 ID
查找其安装程序类。

以下命令使用 DevCon HwIDs 操作通过在打印机端口硬件 ID 中使用短语“LPT”来查找打印机端口接口的设备实例 ID。

devcon hwids *lpt*

在响应中,DevCon 返回打印机端口接口的设备实例 ID(以粗体文本显示)以及硬件 ID。

LPTENUM\MICROSOFTRAWPORT\5&CA97D7E&0&LPT1
Name: Printer Port Logical Interface
Hardware ID's:
LPTENUM\MicrosoftRawPort958A
MicrosoftRawPort958A
1 matching device(s) found.

下一个命令使用 DevCon Stack 操作查找设备实例 ID 表示的设备的设备安装程序类。at 字符 (@) 将此 ID 标识为设备实例 ID。此
ID 包含在引号中,因为它包含 & 字符。

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.

示例
16:显示远程计算机上相关设备的堆栈

以下命令使用 DevCon Stack 操作显示远程计算机 Server01 上微型端口驱动程序设备的预期堆栈。该命令搜索 Net 安装程序类中其硬件 ID 或兼容的 ID 中包含“miniport”的设备。

请注意,该命令首先将搜索限制于 Net 安装程序类,然后查找“miniport”字符串。除了 Net 安装程序类中的设备之外,它不会查找其他设备。

devcon /m:\\server01 stack =net *miniport*

在响应中,DevCon 显示 Server01 上微型端口驱动程序的预期堆栈。

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 on \\Server01.

示例
17:显示本地计算机上所有设备的状态

以下命令使用 DevCon Status 操作查找本地计算机上所有设备的状态。然后,将状态保存在 status.txt 文件中以便记录或供日后查看。该命令使用通配符 (*)
表示所有设备,使用重定向字符 (>) 将输出重定向到 status.txt 文件。

devcon status * > status.txt

示例
18:通过设备实例 ID 显示设备的状态

查找特定设备状态的最可靠的方法是使用设备的设备实例 ID。

以下命令使用 DevCon Status 命令中本地计算机上 I/O 控制器的设备实例 ID。该命令包含设备的设备实例 ID PCI\VEN_8086&DEV_1130&SUBSYS_00000000&REV_02\3&29E81982&0&00。此
ID 前面的 at 字符 (@) 将该字符串标识为设备实例 ID。此 ID 必须包含在引号中,因为它包含 & 字符。

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.

示例
19:显示远程计算机上相关设备的状态

以下命令使用 DevCon Status 操作显示远程计算机 Server01 上与特定存储有关的设备的状态。该命令搜索以下设备:

  • 磁盘驱动器,GenDisk

  • CD-ROM 驱动器,GenCdRom

  • 软盘驱动器,FDC\GENERIC_FLOPPY_DRIVE

  • 卷,STORAGE\Volume

  • 逻辑磁盘管理器,ROOT\DMIO

  • 卷管理器,ROOT\FTDISK

  • 软盘控制器,ACPI\PNP0700

在该命令中,每个 ID 与其他 ID 之间用空格分隔。请注意,GenDisk 和 GenCdRom 是兼容的 ID,而其他 ID 都是硬件 ID。

devcon /m:\\server01 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 on \\Server01.

示例
20:通过硬件 ID 模式查找设备

以下命令使用 DevCon Find 操作搜索远程计算机 Server01 上的鼠标设备。具体来说,该命令搜索 Server01 计算机中其硬件 ID 或兼容的 ID 包含“mou”的设备。

devcon /m:\\Server01 find *mou*

在本例中,DevCon 找到两个鼠标设备。

ROOT\*PNP0F03\1_0_21_0_31_0                                 : Microsoft PS/2 Mouse
ROOT\RDP_MOU\0000 : Terminal Server Mouse Driver

由于所有 DevCon 显示操作也查找硬件 ID,因此你可以使用任何显示操作来搜索硬件 ID。根据输出中所需的内容选择操作。例如,若要查找本地计算机上与鼠标相关的设备使用的设备驱动程序,请提交以下命令。

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.

示例
21:通过设备实例 ID 或类查找设备

以下命令使用 DevCon Find 操作显示本地计算机上的所有旧设备。由于旧设备没有硬件 ID,因此你必须通过它们的设备实例 ID(注册表路径)ROOT\LEGACY 或其安装程序类
LegacyDriver 来搜索它们。

第一个命令通过设备实例 ID 模式查找旧的驱动程序。此 ID 模式前有 at 字符 (@) 用于指示设备实例 ID 以及随后的通配符 (*) 在 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.

示例
22:查找安装程序类中的设备(查找全部)

以下命令使用 DevCon FindAll 操作查找 Net 安装程序类中的计算机上的所有设备。等号 (=) 表示 Net 是安装程序类,而不是 ID。

devcon findall =net

在响应中,DevCon 列出 Net 安装程序类中的下列 7 个设备。前 6 个是标准的微型端口驱动程序设备。第 7 个设备是 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 安装程序类中的下列 6 个设备。

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 命令(仅返回当前安装的设备)不会列出软件枚举的设备,因为该设备未安装。

示例
23:显示某个安装程序类的筛选器驱动程序

以下命令使用 DevCon ClassFilter 操作显示 DiskDrive 安装程序类中的上一级筛选器驱动程序。由于该命令不包含任何 classfilter 运算符,因此 DevCon
显示该类的筛选器驱动程序,而不更改它们。

devcon classfilter DiskDrive upper

在响应中 DevCon 显示 DiskDrive 类的上一级筛选器驱动程序并且确认它没有更改它们。在本例中,此显示显示 DiskDrive 安装程序类中使用 PartMgr.sys 上一级筛选器驱动程序的设备。

Class filters unchanged.
PartMgr

示例
24:向某个安装程序类中添加筛选器驱动程序

以下命令使用 DevCon ClassFilter 操作向 DiskDrive 安装程序类中的上一级筛选器驱动程序列表中添加一个虚构的筛选器 Disklog.sys。

该命令使用 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.

示例
25:在类列表中插入筛选器驱动程序

以下命令使用 DevCon ClassFilter 操作向 DiskDrive 安装程序类中的上一级筛选器驱动程序列表中添加一个虚构的筛选器驱动程序 MyFilter.sys。该命令按照加载顺序将
MyFilter.sys 放置在 PartMgr.sys 和 Disklog.sys 中间。

devcon /r classfilter DiskDrive upper @Disklog -MyFilter

以下列表显示了提交该命令之前 DiskDrive 类的筛选器驱动程序。

    PartMgr
Disklog

第一个子命令 @Disklog 使用定位运算符 (@) 将虚拟光标放置在 Disklog 筛选器驱动程序上。第二个子命令 -MyFilter 使用 add-before 运算符 (-) 将 MyFilter.sys 添加到 Disklog.sys 前面。

该命令还使用 /r 参数,该参数会在必要时重新启动系统以使类筛选器更改生效。

定位运算符在本例中是必不可少的。在 DevCon 处理任何 classfilter 子命令之前,虚拟光标位于列表的开头处,因此未放置在任何筛选器驱动程序上。当光标未在某个驱动程序上时,如果使用 add-before (+) 运算符,DevCon 会将该驱动程序添加到列表的开头处。当光标未在某个驱动程序上时,如果使用 add-after (-) 运算符,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 运算符 (+) 将 MyFilter.sys 添加到 PartMgr 后面。

devcon /r classfilter DiskDrive upper @PartMgr +MyFilter

示例
26:替换筛选器驱动程序

以下命令使用 DevCon ClassFilter 操作将 DiskDrive 安装程序类的筛选器驱动程序列表中 MyFilter.sys 的原始副本替换为新的、改进的版本 MyNewFilter.sys。

devcon /r classfilter DiskDrive upper !MyFilter +MyNewFilter

以下列表显示了提交该命令之前 DiskDrive 类的筛选器驱动程序。

    PartMgr
MyFilter
Disklog

第一个子命令使用删除运算符 (!) 将 MyFilter 从 DiskDrive 类的上一级筛选器驱动程序列表中删除。(它不会影响 C:\Windows\System32\Drivers 目录中的 MyFilter.sys 文件。)

第二个子命令使用 add-after 运算符 (+) 将新的筛选器驱动程序放置在已删除的驱动程序所在的位置。由于删除运算符将光标放置在已删除筛选器所在的位置,因此 add-before (-) 和 add-after (+) 运算符具有相同的效果。

该命令还使用 /r 参数,该参数会在必要时重新启动系统以使类筛选器更改生效。

在响应中,DevCon 显示 DiskDrive 类的新的类筛选器配置。

Class filters changed. Class devices must be restarted for changes to take effect.
PartMgr
MyNewFilter
Disklog

示例
27:更改筛选器驱动程序的顺序

以下命令使用 DevCon ClassFilter 操作更改 DiskDrive 安装程序类的筛选器驱动程序的顺序。具体来说,它颠倒了第二个和第三个筛选器驱动程序的顺序。

devcon /r classfilter DiskDrive upper !Disklog =@PartMgr +Disklog

以下列表显示了提交该命令之前 DiskDrive 类的筛选器驱动程序。它还显示了该命令的预期结果。

之前 之后

PartMgr

PartMgr

MyNewFilter

Disklog

Disklog

MyNewFilter

第一个子命令使用删除运算符 (!)) 从列表中删除 Disklog。第二个子命令使用启动运算符 (=)) 将虚拟光标移回起始位置,然后使用定位运算符 (@)) 将光标放置在 PartMgr 驱动程序上。启动运算符是必需的,因为虚拟光标仅在列表中向前移动。最后一个子命令使用 add-after 运算符 (+)) 将 Disklog 添加到 PartMgr 后面。

在响应中,DevCon 显示 DiskDrive 类的新的类筛选器配置。

Class filters changed. Class devices must be restarted for changes to take effect.
PartMgr
Disklog
MyNewFilter

示例
28:启用特定设备

以下命令使用 DevCon Enable 操作启用已禁止纠正系统问题的可编程中断控制器。由于控制器硬件 ID *PNP0000 包含一个星号,因此该命令使用单引号字符 (')
定向 DevCon 以查找与该命令中指定的完全相同的硬件 ID。否则,会将该星号解释为通配符。

devcon enable '*PNP0000

在响应中,DevCon 显示设备的设备实例 ID 并且注明你必须重新系统才能启用该设备。

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.

示例
29:通过类启用设备

以下命令通过在 DevCon Enable 命令中指定“打印机”安装程序类启用计算机上的所有打印机设备。该命令包含 /r 参数,该参数会在必要时重新启动系统以使启用生效。

devcon /r enable =Printer

在响应中,DevCon 显示在“打印机”类中找到的打印机的设备实例 ID 并报告该打印机已启用。尽管该命令包含 /r 参数,但是系统并不会重新启动,因为启用打印机不需要重新启动。

LPTENUM\HEWLETT-PACKARDDESKJET_1120C\1&7530F08&0&LPT1.4        : Enabled
1 device(s) enabled.

示例
30:通过 ID 模式禁用设备

以下命令使用 DevCon Disable 操作禁用本地计算机上的 USB 设备。该命令通过硬件 ID 模式 (USB*) 来标识设备。该模式将与其硬件 ID 或兼容的 ID 以“USB”开头的任何设备匹配。该命令包含 /r 参数,该参数会在必要时重新启动系统以使禁用生效。

注意   使用 ID 模式禁用设备之前,确定哪些设备将受到影响。为此,在显示命令中使用该模式,如 devcon status USB* 或 devcon hwids USB*
devcon /r disable USB*

在响应中,DevCon 显示 USB 设备的设备实例 ID 并报告这些设备已禁用。尽管该命令包含 /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.

示例
31:通过设备实例 ID 禁用设备

以下命令使用 DevCon Disable 操作禁用本地计算机上的 USB 设备。该命令通过其设备实例 ID 来标识设备,这些 ID 由每个 ID 前面的 at 字符 (@)
所指示。每个设备实例 ID 与其他设备实例 ID 之间用一个空格分隔。

而且,由于设备实例 ID 包含 & 字符 (&),因此它们应包含在引号中。该命令包含 /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 设备的设备实例 ID 并报告这些设备已禁用。尽管该命令包含 /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.

示例
32:更新通信端口的驱动程序

以下命令使用 DevCon Update 操作将系统上通信端口的当前设备驱动程序替换为 test.inf 文件中指定的测试驱动程序。该命令只影响其整个硬件 ID 为 *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.

示例
33:安装设备

以下命令使用 DevCon Install 操作在本地计算机上安装键盘设备。该命令包含到该设备的 INF 文件的完整路径 (keyboard.inf) 和一个硬件 ID (*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.

示例
34:使用无人参与安装来安装设备

以下示例显示在无人参与安装 Microsoft Windows XP 期间如何安装 Microsoft 环回适配器。

若要在无人参与安装期间安装此设备,请首先向软盘中添加以下文件:devcon.exe 和 netloop.inf (C:\Windows\inf\netloop.inf)。

然后,向无人参与安装文件的 [GUIRunOnce] 部分中添加以下 DevCon 命令:

a:\devcon /r install a:\Netloop.inf '*MSLOOP

该命令使用其硬件 ID *MSLOOP 来标识环回适配器。“*MSLOOP”前面的单引号字符告知 DevCon 按照字义解释该字符串,也就是说将星号解释为硬件 ID 的一部分,而不是解释为通配符。

该命令还指定 DevCon 在安装中使用 Netloop.inf 文件(位于软盘上)。仅当必须重新启动才能完成安装时,/r 参数才会重新启动计算机。

最后,向无人参与安装文件中添加网络配置设置并运行无人参与安装。

示例
35:通过设备实例 ID 模式删除设备

以下命令使用 DevCon Remove 操作删除计算机中的所有 USB 设备。该命令通过设备实例 ID 模式来标识设备,该模式与以“USB\”字符串开头的任何设备实例 ID(注册表路径)都匹配。at
字符 (@) 将设备实例 ID 与硬件 ID 或兼容的 ID 区分开来。该命令也包含 /r 参数,该参数会在需要时重新启动系统以使删除过程生效。

警告   使用某个模式删除任何设备之前,确定哪些设备会受到影响。为此,在显示命令中使用该模式,如 devcon status @usb\* 或 devcon hwids @usb\*
devcon /r remove @usb\*

在响应中,DevCon 显示已删除的设备的设备实例 ID。

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.

示例
36:删除特定的网络设备

以下命令使用 DevCon Remove 操作从本地计算机上卸载 NDISWAN 微型端口驱动程序。该命令指定 Net 类,然后通过指定该类中的设备(其硬件 ID 或兼容的 ID 包含“ndiswan”)来改进搜索。该命令也包含 /r 参数,该参数会在需要时重新启动系统以使删除过程生效。

警告   使用某个模式删除任何设备之前,确定哪些设备会受到影响。为此,在显示命令中使用该模式,如 devcon status =net *ndiswan* 或 devcon hwids =net *ndiswan*
devcon /r remove =net *ndiswan*

在响应中,DevCon 显示已删除的设备的设备实例 ID。

ROOT\MS_NDISWANIP\0000 : Removed 1 device(s) removed.

示例
37:扫描计算机中的新设备

以下命令使用 DevCon Rescan 操作扫描本地计算机中的新设备。

devcon rescan

在响应中,DevCon 报告它已扫描系统,但未发现任何新设备。

Scanning for new hardware.
Scanning completed.

也可以在远程计算机上使用 DevCon Rescan 命令。以下命令通过向命令中添加 /m 参数在远程计算机 Server01 上运行 DevCon Rescan 操作。

devcon /m:\\server01 rescan

示例
38:重新启动设备

以下命令使用 DevCon Restart 操作在本地计算机上重新启动环回适配器。该命令将搜索限制于 Net 安装程序类,并且在该类中,指定环回适配器的设备实例 IDROOT\*MSLOOP\0000。at
字符 (@) 将此字符串标识为设备实例 ID。请求字义搜索的单引号字符 ('), 防止 DevCon 将 ID 中的星号解释为通配符字符。

devcon restart =net @'ROOT\*MSLOOP\0000

在响应中,DevCon 显示设备的设备实例 ID 并报告结果。

ROOT\*MSLOOP\0000                                              : Restarted
1 device(s) restarted.

示例
39:重新启动本地计算机

以下命令使用 DevCon Reboot 操作在本地计算机上重新启动操作系统并将重新启动与硬件安装相关联。与 /r 参数不同,DevCon
Reboot 
操作不依赖于另一个操作的返回代码。

可以将该命令包含在需要重新启动系统的脚本和批处理文件中。

devcon reboot

在响应中,DevCon 显示一条表明正在重新启动计算机的消息(正在重新启动本地计算机)。


DevCon 使用标准的 ExitWindowsEx 函数来重新启动。如果用户已在计算机上打开文件或者某个程序未关闭,那么系统不会重新启动,直到用户对关闭这些文件或结束该进程的系统提示进行响应为止。

示例
40:为旧设备分配硬件 ID

以下命令使用 DevCon SetHwID 操作将硬件 ID beep 分配给旧的蜂鸣设备。

该命令使用设备的设备实例 ID ROOT\LEGACY_BEEP\0000,因为旧的蜂鸣设备没有硬件 ID 或兼容的 ID。该命令使用 at 字符 (@) 指示该字符串为设备实例 ID。

该命令不会使用任何符号参数来定位 ID。默认情况下,DevCon 将新的硬件 ID 添加到硬件 ID 列表的结尾处。在本例中,由于设备没有其他硬件 ID,因此与位置无关。

devcon sethwid @ROOT\LEGACY_BEEP\0000 := beep

在响应中,DevCon 显示一条消息,该消息指出已向设备的硬件 ID 列表中添加了 beep。还显示所得到的硬件 ID 列表。在本例中,列表中只有一个硬件 ID。

ROOT\LEGACY_BEEP\0000                              : beep
Modified 1 hardware ID(s).

示例
41:为远程计算机上的所有旧设备添加硬件 ID

以下命令使用 DevCon SetHwID 操作将硬件 ID legacy 添加到远程计算机 Server1 上所有旧设备的硬件 ID 列表中。

该命令使用 - 符号参数将新的硬件 ID 添加到设备的硬件 ID 列表的结尾处(如果已为其中一个设备创建了首选的硬件 ID)。该命令使用 /m 参数来指定远程计算机。它还使用设备实例 ID 模式 @ROOT\LEGACY* 标识计算机上的旧设备,即,其设备实例 ID 以 ROOT\LEGACY 开头的所有设备。

devcon /m:\\Server1 sethwid @ROOT\LEGACY* := -legacy

在响应中,DevCon 显示所有受影响的设备的结果硬件 ID 列表。

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).

为一组设备分配相同的硬件 ID 之后,你可以使用其他 DevCon 操作在一个命令中查看和更改设备。

例如,以下命令显示了所有旧设备的状态。

devcon status legacy

示例
42:从远程计算机上的所有旧设备中删除硬件 ID

以下命令使用 DevCon SetHwID 操作将硬件 ID legacy 从远程计算机 Server1 上所有旧设备的硬件 ID 列表中删除。

此命令使用 /m 参数来指定远程计算机。它使用硬件 ID legacy 来标识具有该硬件 ID 的所有设备。然后,它使用 ! 符号参数删除 legacy 硬件 ID。

devcon /m:\\Server1 sethwid legacy := !legacy

在响应中,DevCon 显示所有受影响的设备的结果硬件 ID 列表。

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).

示例
43:添加、删除和替换硬件 ID

下面的一系列示例显示了如何使用 DevCon SetHwID 操作的各种功能。

此系列使用一个虚构的设备 DeviceX,其设备实例 ID 为 ROOT\DeviceX\0000。使用 DevCon 之前,该设备具有以下硬件 ID 列表:

Hw3 Hw4

以下命令使用 + 符号将 Hw1 和 Hw2 添加到 DeviceX 的硬件 ID 列表的开头处。由于 Hw2 已出现在列表中,因此只是进行移动,而不是添加。该命令通过其设备实例 ID 来标识设备,这些 ID 由每个 ID 前面的 at 字符 (@) 所指示。

devcon sethwid @ROOT\DEVICEX\0000 := +Hw1 Hw2

在响应中,DevCon 显示设备的新硬件 ID 列表。请注意,Hw1 和 Hw2 按照指定的顺序出现在列表的开头处。

ROOT\DEVICEX\0000                         : Hw1,Hw2,Hw3,Hw4
Modified 1 hardware ID(s).

而且,DevCon 报告它已修改一个硬件 ID 列表,即,一个设备的硬件 ID 列表。

以下命令使用 ! 符号删除 Hw1 硬件 ID。然后,它不使用任何符号参数列出硬件 ID Hw5。如果不使用符号参数,SetHwID 会将硬件 ID 添加到设备的硬件 ID 列表的结尾处。

该命令演示了这种情况,与 DevCon SetHwID 操作的其他符号参数不同,! 参数仅应用于使用它作为前缀的硬件 ID.

devcon sethwid @ROOT\DeviceX\0000 := !Hw1 Hw5

在响应中,DevCon 显示 DeviceX 的结果硬件 ID 列表。

ROOT\DEVICEX\0000                         : Hw2,Hw3,Hw4,Hw5
Modified 1 hardware ID(s).

以下命令使用 = 参数将 DeviceX 的所有硬件 ID 列表替换为一个硬件 ID DevX

devcon sethwid @ROOT\DeviceX\0000 := =DevX

在响应中,DevCon 显示 DeviceX 的结果硬件 ID 列表。

ROOT\DEVICEX\0000                         : DevX
Modified 1 hardware ID(s).

成功消息指示 DevCon 已修改一个设备的硬件 ID。

示例
44:强制更新 HAL

以下示例显示如何使用 DevCon 更新计算机上的 HAL。在该示例中,测试人员希望将该计算机最适合的单处理器 APCI APIC HAL 替换为多处理器 APCI APIC HAL 以便进行测试。

第一个命令使用 DevCon SetHwID 操作将 HAL 的硬件 ID 从 acpiapic_up(单处理器 HAL 的硬件 ID)更改为 acpiapic_mp(多处理器
HAL 的硬件 ID)。

必须更改硬件 ID,因为 HAL 的 INF 文件包含单处理器和多处理器 HAL 的驱动程序。系统根据设备的硬件 ID 从 INF 文件中选择最合适的驱动程序。如果不更改硬件 ID,那么 DevCon Update 命令将只是重新安装单处理器 HAL 驱动程序。

在以下命令中,该命令通过它的实例 ID ROOT\ACPI_HAL\0000 来标识 HAL,该 ID 由 ID 前面的 @ 字符所指示。该命令使用 + 字符使 acpiapic_mp 成为 HAL 硬件 ID 列表中的第一个硬件 ID。然后,它使用 ! 字符从 HAL 的硬件 ID 列表中删除 acpiapic_up 硬件
ID。

devcon sethwid @ROOT\ACPI_HAL\0000 := +acpiapic_mp !acpiapic_up

在响应中,DevCon 显示 HAL 的以下新硬件 ID 列表。

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.