设备控制台 (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 HwID 操作 ,该操作返回 ID 和设备说明。 它使用通配符 (*) 来表示本地计算机上的所有设备。

devcon hwids *

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

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

devcon hwids * > hwids.txt

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

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

以下命令使用 DevCon HwID 操作 和模式来查找计算机上的软盘驱动器的硬件 ID。 (用户假定模式出现在设备标识符之一中。) 命令使用通配符 (*) 来表示任何 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 在 Ports 安装程序类中显示三个设备的硬件 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 中的设备,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 操作列出系统上设备使用的驱动程序的文件名。 命令使用通配符 (*) 来指示系统上的所有设备。 由于输出范围很广,因此该命令使用重定向字符 (>) 将输出重定向到引用文件,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 操作列出分配给系统计时器的资源。 命令使用系统计时器的硬件 ID 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 命令中系统计时器的设备实例 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 文件中,以供日志记录或以后查看。 命令使用通配符 (*) 表示所有设备,并使用重定向字符 (>) 将输出重定向到 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 查找 操作搜索鼠标设备。 具体而言,该命令在计算机上搜索其硬件 ID 或兼容 ID 包含“mou.”的设备,并且找不到“驼鹿”驱动程序。

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 模式的前面是 at 字符 (@) 指示设备实例 ID,后跟通配符 (*) 查找 ROOT\旧版子项中的所有设备。

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

示例 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 文件。)

第二个子命令使用 add-after 运算符 (+) 将新的筛选器驱动程序放置在已删除的驱动程序占据的位置。 由于 delete 运算符将光标保留在已删除的筛选器占用的位置,因此 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

第一个子命令使用 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 status 命令确认设备已启用。

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 前面的 at 字符 (@) 指示。 每个设备实例 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 更新 操作的非交互版本)更新驱动程序。 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 安装 操作在本地计算机上安装键盘设备。 命令包括设备 (keyboard.inf) 的 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 设备。 它通过与以“USB\”字符串开头的任何设备实例 ID (注册表路径) 匹配的设备实例 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 重新扫描 操作扫描本地计算机以查找新设备。

devcon rescan

作为响应,DevCon 报告它扫描了系统,但没有发现任何新设备。

Scanning for new hardware.
Scanning completed.

示例 38:重启设备

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

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

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

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

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

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

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

devcon reboot

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

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

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

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

命令使用设备的设备实例 ID ROOT\LEGACY_BEEP\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 前面的 at 字符 (@) 所示。

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

必须更改硬件 ID,因为 HAL 的 INF 文件包含单处理器和多处理器 HALs 的驱动程序。 系统根据设备的硬件 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 中 Toaster 示例驱动程序的 INF 文件复制到驱动程序存储,即 %Windir%\inf 目录。 命令包含 Toaster 示例驱动程序的 INF 文件的完全限定路径。

此命令适用于第三方 (OEM) 驱动程序和设备,但你可以使用 Toaster 示例来测试命令。

devcon dp_add C:\WinDDK\5322\src\general\toaster\inf\i386\toaster.inf

作为响应,DevCon 报告它已将 Toaster 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.

若要从驱动程序存储中删除 Toaster 驱动程序的驱动程序包,必须使用驱动程序的 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) 和 catalog (.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.