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

重要

PnPUtil 随每个版本的 Windows 一起提供,并利用最可靠且最安全的 API,建议使用它。 有关使用 PnPutil 而不是 devcon 的详细信息,请参阅 替换 DevCon

示例分类

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

DevCon HwIDs

DevCon Classes

DevCon ListClass

DevCon DriverFiles

DevCon DriverNodes

DevCon Resources

DevCon Stack

DevCon Status

DevCon Find

DevCon FindAll

DevCon ClassFilter

DevCon Enable

DevCon Disable

DevCon 更新和 UpdateNI

DevCon Install

DevCon Remove

DevCon Rescan

DevCon Restart

DevCon Reboot

DevCon SetHwID

DevCon dp_add、dp_deleted、dp_enum

示例详细信息

示例 1:查找所有硬件 ID

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

以下命令使用 DevCon HwIDs 操作,该操作返回 ID 和设备说明。 它使用 wild卡 字符 (*) 来表示本地计算机上的所有设备。

devcon hwids *

由于输出冗长且重复使用,因此请将输出保存在文本文件中以供引用。

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

devcon hwids * > hwids.txt

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

若要查找特定设备的硬件 ID,请输入硬件 ID 或模式、兼容的 ID 或模式、设备实例 ID 或模式,或设备设置类的名称。

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

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.

在这种情况下,短语“软盘”发生在计算机上的一台设备的硬件 ID 或兼容 ID 中。 如果它出现在多个设备的 ID 中,则其 ID 中具有“软盘”的所有设备都会显示在输出中。

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

以下命令使用 DevCon HwID 操作 和设备安装类查找端口设备安装类中所有设备的硬件 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 类 操作,该操作返回计算机上的所有类的列表和说明。

devcon classes

由于输出冗长且重复使用,因此请将输出保存在文本文件中以供引用。

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

devcon classes > 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 操作列出 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).

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

以下命令使用 DevCon DriverFiles 操作列出系统上设备的驱动程序的文件名。 该命令使用 wild卡 字符(*)来指示系统上的所有设备。 由于输出很广泛,因此该命令使用重定向字符 (>) 将输出重定向到引用文件,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 操作列出分配给系统计时器的资源。 该命令使用系统计时器 ACPI\PNP0100 的硬件 ID 来指定设备。

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 资源命令中使用系统计时器的设备实例 ID。 at 字符 (@) 指示字符串是设备实例 ID,而不是硬件 ID 或兼容 ID。

devcon resources "@ACPI\PNP0100\4&b4063f4&0"

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

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

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.

以下命令使用 DevCon Stack 操作显示微型端口驱动程序设备的预期堆栈。 它在 Net 安装类中搜索其硬件 ID 或兼容 ID 中有“微型端口”的设备。

请注意,此命令首先将搜索限制为 Net 安装程序类,然后查找“微型端口”字符串。 它找不到除 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.

示例 17:显示所有设备的状态

以下命令使用 DevCon Status 操作查找本地计算机上所有设备的状态。 然后,它将状态保存在status.txt文件中,以便进行日志记录或更高版本的评审。 该命令使用 wild卡 字符(*)来表示所有设备和重定向字符(>)将输出重定向到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.

以下命令使用 DevCon Status 操作显示特定存储相关设备的状态。 它会搜索以下设备:

  • 磁盘驱动器,GenDisk

  • CD-ROM 驱动器,GenCdRom

  • 软盘驱动器,FDC\GENERIC_FLOPPY_DRIVE

  • 卷、STORAGE\Volume

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

  • 卷管理器,ROOT\FTDISK

  • 软盘控制器,ACPI\PNP0700

在命令中,每个 ID 通过空格与其他 ID 隔开。 请注意,GenDisk 和 GenCdRom 是兼容的 ID,而其他 ID 是硬件 ID。

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.

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

以下命令使用 DevCon Find 操作搜索鼠标设备。 具体而言,该命令在计算机中搜索其硬件 ID 或兼容 ID 包括“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 显示操作还查找硬件 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 模式以字符 (@) 开头,指示设备实例 ID,后跟 wild卡 字符(*)以查找 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 安装类中的以下七个设备。 前六个是标准微型端口驱动程序设备。 第七个设备 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 FindAll 命令相同的参数运行 DevCon Find 命令来比较 DevCon FindDevCon 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 命令不会列出软件枚举的设备,因为未安装该设备。

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

以下命令使用 DevCon ClassFilter 操作显示 DiskDrive 安装类的上部筛选器驱动程序。 由于此命令不包含类筛选运算符,DevCon 将显示类的筛选器驱动程序,但不更改它们。

devcon classfilter DiskDrive upper

作为响应,DevCon 显示 DiskDrive 类的上部筛选器驱动程序,并确认它未更改它们。 在本例中,显示显示 DiskDrive 安装类中的设备使用PartMgr.sys上层筛选器驱动程序。

Class filters unchanged.
    PartMgr

示例 24:将筛选器驱动程序添加到安装类

以下命令使用 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 不会添加驱动程序,除非驱动程序注册为服务,也就是说,除非驱动程序在服务注册表子项中具有子项(HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services)。

以下命令测试此保护功能。 它尝试将“Disklgg”(而不是“Disklog”)添加到 DiskDrive 类的上部筛选器列表中。 输出演示命令失败。

devcon /r classfilter DiskDrive upper +Disklgg
devcon failed.

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

以下命令使用 DevCon ClassFilter 操作将虚构的筛选器驱动程序MyFilter.sys添加到 DiskDrive 安装类的上层筛选器驱动程序列表中。 该命令按加载顺序在PartMgr.sys和Disklog.sys之间放置MyFilter.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 会将驱动程序添加到列表的开头。 如果在游标未定位在驱动程序上时使用 add-after (-) 运算符,则会将驱动程序添加到列表的末尾。

作为响应,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

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

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

devcon /r classfilter DiskDrive upper !MyFilter +MyNewFilter

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

    PartMgr
    MyFilter
    Disklog

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

第二个子命令使用加载项运算符 (+) 将新筛选器驱动程序置于已删除驱动程序占用的位置。 由于 delete 运算符将光标保留在已删除的筛选器占用的位置,因此加载项 () 和加载项 (-+) 运算符具有相同的效果。

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

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

作为响应,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 重新启动 操作来响应。

以下命令将 /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 显示它在 Printer 类中找到的打印机的设备实例 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 通过空格与其他设备实例 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 更新 操作将系统上的通信端口的当前设备驱动程序替换为 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 Loopback 适配器。

若要在无人参与安装期间安装此设备,请首先将以下文件添加到软盘: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 *ndiswandevcon 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.

示例 38:重启设备

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

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

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

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

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

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

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

devcon reboot

作为响应,DevCon 会显示一条消息,指示它正在重启计算机(重新启动本地计算机)。

DevCon 使用标准 ExitWindowsEx 函数重新启动。 如果用户在计算机上打开文件或程序不会关闭,则在用户响应系统提示关闭文件或结束该过程之前,系统不会重新启动。

示例 40:将硬件 ID 分配给旧版设备

以下命令使用 DevCon SetHwID 操作将硬件 ID(蜂鸣声)分配给旧版蜂鸣器。

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

此命令不使用任何符号参数来定位 ID。 默认情况下,DevCon 会将新的硬件 ID 添加到硬件 ID 列表的末尾。 在这种情况下,由于设备没有其他硬件 ID,因此放置无关紧要。

devcon sethwid @ROOT\LEGACY_BEEP\0000 := beep

作为响应,DevCon 会显示一条消息,指示它已添加到设备的硬件 ID 列表中。 它还显示生成的硬件 ID 列表。 在这种情况下,列表中只有一个硬件 ID。

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

示例 41:向所有旧设备添加硬件 ID

以下命令使用 DevCon SetHwID 操作将硬件 ID(旧版)添加到所有旧设备的硬件 ID 列表中。

该命令使用 - 符号参数将新的硬件 ID 添加到设备硬件 ID 列表末尾,以防已为其中一台设备创建首选硬件 ID。 它还使用设备实例 ID 模式 @ROOT\LEGACY\*来标识计算机上的旧设备,即设备实例 ID 开头 ROOT\LEGACY*的所有设备。

devcon 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 列表中删除硬件 ID(版)。

该命令使用硬件 ID 旧版标识具有该硬件 ID 的所有设备。 然后,它使用 符号参数删除 硬件 ID。

devcon 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

以下命令使用+符号将 Hw1Hw2 添加到 DeviceX 的硬件 ID 列表的开头。 由于 Hw2 已出现在列表中,因此它已被移动,而不是添加。 该命令按设备实例 ID 标识设备,如 ID 前面的字符(@)指示。

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

作为响应,DevCon 会显示设备的新硬件 ID 列表。 请注意, Hw1Hw2 按指定顺序显示在列表的开头。

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、单处理器 HA 的硬件 ID 更改为 acpiapic_mp多处理器 HA 的硬件 ID。

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

在以下命令中,命令按其实例 ID ROOT\ACPI_HAL\0000 标识 HAL,如 @ ID 前面的字符指示。 该命令使用+字符acpiapic_mp HAL 列表中的第一个硬件 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 更新 操作更新 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.

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

以下示例演示如何使用 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 文件的二进制版本进行比较,以确保它不会添加重复文件。 例如,如果重复该命令将 Tile.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 提供的驱动程序包与未指定的设备类(烤箱)命名为 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.