Поделиться через


Примеры консоли устройства (DevCon.exe)

Внимание

PnPUtil поставляется с каждым выпуском Windows и использует наиболее надежные и безопасные API и его использование рекомендуется. Дополнительные сведения об использовании PnPutil вместо devcon см. в разделе "Замена DevCon".

Примеры катагарий

В этом разделе приведены примеры следующих команд консоли устройств (DevCon.exe):

DevCon HwIDs

Классы DevCon

DevCon ListClass

DevCon DriverFiles

DevCon DriverNodes

Ресурсы DevCon

Стек DevCon

Состояние DevCon

Поиск DevCon

DevCon FindAll

DevCon ClassFilter

Включение DevCon

Отключение DevCon

DevCon Update and UpdateNI

Установка DevCon

Удаление DevCon

DevCon Rescan

Перезапуск DevCon

Перезагрузка DevCon

DevCon SetHwID

DevCon dp_add, dp_deleted, dp_enum

Примеры сведений

Пример 1. Поиск всех идентификаторов оборудования

Так как операции DevCon используют идентификаторы и шаблоны идентификаторов для идентификации устройств, распространенный первый шаг при использовании DevCon — создание файла ссылок на идентификатор оборудования для устройств на компьютере.

Следующая команда использует операцию DevCon HwIDs , которая возвращает идентификаторы и описание устройства. Он использует дикий карта символ (*) для представления всех устройств на локальном компьютере.

devcon hwids *

Так как выходные данные являются длительными и часто используются, сохраните выходные данные в текстовом файле для ссылки.

Следующая команда использует дикий карта символ (*) для представления всех устройств на компьютере. Он использует символ перенаправления (>) для сохранения выходных данных команды в файле hwids.txt.

devcon hwids * > hwids.txt

Пример 2. Поиск идентификаторов оборудования с помощью шаблона

Чтобы найти идентификаторы оборудования определенного устройства, введите идентификатор оборудования или шаблон, совместимый идентификатор или шаблон, идентификатор экземпляра устройства или шаблон или имя класса установки устройства.

Следующая команда использует операцию DevCon HwIDs и шаблон для поиска аппаратных идентификаторов дискового диска на компьютере. (Пользователь предполагает, что шаблон отображается в одном из идентификаторов устройства.) Команда использует дикий карта символ (*) для представления всех символов, которые могут предшествовать или следовать за словом "floppy" в любом из идентификаторов.

devcon hwids *floppy*

В ответ DevCon отображает идентификатор экземпляра устройства, идентификатор оборудования и совместимый идентификатор диска floppy на компьютере. Эти идентификаторы можно использовать в последующих командах DevCon.

FDC\GENERIC_FLOPPY_DRIVE\5&39194F6D&0&0
    Name: Floppy disk drive
    Hardware ID's:
        FDC\GENERIC_FLOPPY_DRIVE
    Compatible ID's:
        GenFloppyDisk
1 matching device(s) found.

В этом случае фраза "floppy" возникает в идентификаторе оборудования или совместимом идентификаторе только одного устройства на компьютере. Если это происходит в идентификаторе нескольких устройств, все устройства с "floppy" в их идентификаторах отображаются в выходных данных.

Пример 3. Поиск идентификаторов оборудования с помощью класса

Следующая команда использует операцию DevCon HwIDs и класс установки устройства для поиска аппаратных идентификаторов всех устройств в классе установки устройств "Порты". Знак равенства (=) перед именем класса указывает, что это класс, а не идентификатор.

devcon hwids =ports

В ответ DevCon отображает идентификаторы оборудования и совместимые идентификаторы трех устройств в классе установки портов.

ACPI\PNP0401\4&B4063F4&0
    Name: ECP Printer Port (LPT1)
    Hardware ID's:
        ACPI\PNP0401
        *PNP0401
ACPI\PNP0501\1
    Name: Communications Port (COM1)
    Hardware ID's:
        ACPI\PNP0501
        *PNP0501
ACPI\PNP0501\2
    Name: Communications Port (COM2)
    Hardware ID's:
        ACPI\PNP0501
        *PNP0501
3 matching device(s) found.

Пример 4. Перечисление классов на локальном компьютере

Так как операции DevCon могут использовать класс установки устройства для идентификации устройств, полезно создать эталонный файл классов установки устройств на компьютере.

Следующая команда использует операцию DevCon Classes , которая возвращает список и описание всех классов на компьютере.

devcon classes

Так как выходные данные являются длительными и часто используются, сохраните выходные данные в текстовом файле для ссылки.

Следующая команда отображает все классы устройств на компьютере. Он использует символ перенаправления (>) для сохранения выходных данных команды в файле classes.txt.

devcon classes > classes.txt

Пример 6. Вывод списка устройств в классе установки устройства

Следующая команда использует операцию DevCon ListClass для перечисления устройств в Net, класса установки устройства для сетевых адаптеров.

devcon listclass net

В ответ DevCon отображает идентификатор экземпляра устройства и описание каждого устройства в классе установки Net.

Listing 6 device(s) for setup class "Net" (Network adapters).
PCI\VEN_10B7&DEV_9200&SUBSYS_00BE1028&REV_78\4&BB7B4AE&0&60F0: 3Com 3C920 Integrated Fast Ethernet Controller (3C905C-TX Compatible)
ROOT\MS_L2TPMINIPORT\0000                                   : WAN Miniport (L2TP)
ROOT\MS_NDISWANIP\0000                                      : WAN Miniport (IP)
ROOT\MS_PPPOEMINIPORT\0000                                  : WAN Miniport (PPPOE)
ROOT\MS_PPTPMINIPORT\0000                                   : WAN Miniport (PPTP)
ROOT\MS_PTIMINIPORT\0000                                    : Direct Parallel

Это отображение, хотя и интересно, не предоставляет аппаратные идентификаторы устройств в классе установки Net. Следующая команда использует операцию DevCon HwIDs для перечисления устройств в классе установки Net. В команде DevCon HwIDs имя класса предшествует знак равенства (=), чтобы указать, что это класс, а не идентификатор.

devcon hwids =net

В результате отображается список устройств в классе Net и содержится идентификатор экземпляра устройства, идентификаторы оборудования и совместимые идентификаторы устройств в классе.

PCI\VEN_10B7&DEV_9200&SUBSYS_00BE1028&REV_78\4&BB7B4AE&0&60F0
    Name: 3Com 3C920 Integrated Fast Ethernet Controller (3C905C-TX Compatible)
    Hardware ID's:
        PCI\VEN_10B7&DEV_9200&SUBSYS_00BE1028&REV_78
        PCI\VEN_10B7&DEV_9200&SUBSYS_00BE1028
        PCI\VEN_10B7&DEV_9200&CC_020000
        PCI\VEN_10B7&DEV_9200&CC_0200
    Compatible ID's:
        PCI\VEN_10B7&DEV_9200&REV_78
        PCI\VEN_10B7&DEV_9200
        PCI\VEN_10B7&CC_020000
        PCI\VEN_10B7&CC_0200
 PCI\VEN_10B7
        PCI\CC_020000
 PCI\CC_0200
ROOT\MS_L2TPMINIPORT\0000
    Name: WAN Miniport (L2TP)
    Hardware ID's:
        ms_l2tpminiport
ROOT\MS_NDISWANIP\0000
    Name: WAN Miniport (IP)
    Hardware ID's:
        ms_ndiswanip
ROOT\MS_PPPOEMINIPORT\0000
    Name: WAN Miniport (PPPOE)
    Hardware ID's:
        ms_pppoeminiport
ROOT\MS_PPTPMINIPORT\0000
    Name: WAN Miniport (PPTP)
    Hardware ID's:
        ms_pptpminiport
ROOT\MS_PTIMINIPORT\0000
    Name: Direct Parallel
    Hardware ID's:
        ms_ptiminiport
6 matching device(s) found.

Пример 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 для поиска драйвера устройства, который использует устройство мыши на локальном компьютере. Он определяет устройство по одному из его аппаратных идентификаторов, HID\Vid_045e&Pid_0039&Rev_0121. Идентификатор оборудования заключен в кавычки, так как он включает в себя амперсанд (>).

devcon driverfiles "HID\Vid_045e&Pid_0039&Rev_0121"

В ответ DevCon отображает два драйвера устройства, поддерживающие устройство мыши.

HID\VID_045E&PID_0039\6&DC36FDE&0&0000
    Name: Microsoft USB IntelliMouse Optical
    Driver installed from c:\windows\inf\msmouse.inf [HID_Mouse_Inst]. 2 file(s)
 used by driver:
        C:\WINDOWS\System32\DRIVERS\mouhid.sys
        C:\WINDOWS\System32\DRIVERS\mouclass.sys
1 matching device(s) found.

Пример 10. Вывод списка пакетов драйверов по шаблону идентификатора оборудования

Следующая команда использует команду DevCon DriverNodes и шаблон идентификатора для перечисления узлов драйверов для перечисляемых программного обеспечения устройств. Шаблоны полезны для поиска сведений об аналогичных устройствах, которые могут не находиться в одном классе установки.

Следующая команда использует шаблон идентификатора sw\* для указания устройств, идентификаторы которых оборудования или совместимые идентификаторы начинаются с "sw", то есть устройства, перечисляемые программными средствами.

devcon drivernodes sw*

В ответ DevCon отображает узлы драйверов для перечисленных программного обеспечения устройств в системе.

SW\{A7C7A5B0-5AF3-11D1-9CED-00A024BF0407}\{9B365890-165F-11D0-A195-0020AFD156E4}

 Name: Microsoft Kernel System Audio Device
DriverNode #0:
    Inf file is c:\windows\inf\wdmaudio.inf
    Inf section is WDM_SYSAUDIO
    Driver description is Microsoft Kernel System Audio Device
    Manufacturer name is Microsoft
    Provider name is Microsoft
    Driver date is 7/1/2001
    Driver version is 5.1.2535.0
    Driver node rank is 0
    Driver node flags are 00002244
        Inf is digitally signed
SW\{B7EAFDC0-A680-11D0-96D8-00AA0051E51D}\{9B365890-165F-11D0-A195-0020AFD156E4}

    Name: Microsoft Kernel Wave Audio Mixer
DriverNode #0:
    Inf file is c:\windows\inf\wdmaudio.inf
    Inf section is WDM_KMIXER
    Driver description is Microsoft Kernel Wave Audio Mixer
    Manufacturer name is Microsoft
    Provider name is Microsoft
    Driver date is 7/1/2001
    Driver version is 5.1.2535.0
    Driver node rank is 0
    Driver node flags are 00002244
        Inf is digitally signed
SW\{CD171DE3-69E5-11D2-B56D-0000F8754380}\{9B365890-165F-11D0-A195-0020AFD156E4}

    Name: Microsoft WINMM WDM Audio Compatibility Driver
DriverNode #0:
    Inf file is c:\windows\inf\wdmaudio.inf
    Inf section is WDM_WDMAUD
    Driver description is Microsoft WINMM WDM Audio Compatibility Driver
    Manufacturer name is Microsoft
    Provider name is Microsoft
    Driver date is 7/1/2001
    Driver version is 5.1.2535.0
    Driver node rank is 0
    Driver node flags are 00002244
        Inf is digitally signed
3 matching device(s) found.

Пример 11. Вывод списка пакетов драйверов по шаблону идентификатора экземпляра устройства

Следующая команда использует операцию DevCon DriverNodes для перечисления пакетов драйверов всех устройств, идентификаторы экземпляров устройства которых начинаются с ROOT\MEDIA, то есть устройств в подразделе реестра Enum\Root\Media. Команда использует символ (@) для указания того, что фраза находится в идентификаторе экземпляра устройства.

devcon drivernodes @ROOT\MEDIA*

В ответ DevCon отображает узлы драйверов устройств, идентификатор экземпляра устройства которых начинается с root\MEDIA.

ROOT\MEDIA\MS_MMACM
    Name: Audio Codecs
DriverNode #0:
    Inf file is c:\windows\inf\wave.inf
    Inf section is MS_MMACM
    Driver description is Audio Codecs
    Manufacturer name is (Standard system devices)
    Provider name is Microsoft
    Driver date is 7/1/2001
    Driver version is 5.1.2535.0
    Driver node rank is 0
    Driver node flags are 00002240
        Inf is digitally signed
ROOT\MEDIA\MS_MMDRV
    Name: Legacy Audio Drivers
DriverNode #0:
    Inf file is c:\windows\inf\wave.inf
    Inf section is MS_MMDRV
    Driver description is Legacy Audio Drivers
    Manufacturer name is (Standard system devices)
    Provider name is Microsoft
    Driver date is 7/1/2001
    Driver version is 5.1.2535.0
    Driver node rank is 0
    Driver node flags are 00002240
        Inf is digitally signed
ROOT\MEDIA\MS_MMMCI
    Name: Media Control Devices
DriverNode #0:
    Inf file is c:\windows\inf\wave.inf
    Inf section is MS_MMMCI
    Driver description is Media Control Devices
    Manufacturer name is (Standard system devices)
    Provider name is Microsoft
    Driver date is 7/1/2001
    Driver version is 5.1.2535.0
    Driver node rank is 0
    Driver node flags are 00002240
        Inf is digitally signed
ROOT\MEDIA\MS_MMVCD
    Name: Legacy Video Capture Devices
DriverNode #0:
    Inf file is c:\windows\inf\wave.inf
    Inf section is MS_MMVCD
    Driver description is Legacy Video Capture Devices
    Manufacturer name is (Standard system devices)
    Provider name is Microsoft
    Driver date is 7/1/2001
    Driver version is 5.1.2535.0
    Driver node rank is 0
    Driver node flags are 00002240
        Inf is digitally signed
ROOT\MEDIA\MS_MMVID
    Name: Video Codecs
DriverNode #0:
    Inf file is c:\windows\inf\wave.inf
    Inf section is MS_MMVID
    Driver description is Video Codecs
    Manufacturer name is (Standard system devices)
    Provider name is Microsoft
    Driver date is 7/1/2001
    Driver version is 5.1.2535.0
    Driver node rank is 0
    Driver node flags are 00002240
        Inf is digitally signed
5 matching device(s) found.

Пример 12. Перечисление ресурсов класса устройств

Следующая команда использует операцию DevCon Resources для отображения ресурсов, выделенных устройствам в классе установки устройств Hdc. Этот класс включает контроллеры интегрированной среды разработки. Знак равенства (=) добавляется в "hdc", чтобы указать, что это класс, а не идентификатор.

devcon resources =hdc

В ответ DevCon перечисляет ресурсы, выделенные контроллерам интегрированной среды разработки на локальном компьютере.

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. Перечисление ресурсов устройства по идентификатору

Следующая команда использует операцию DevCon Resources для перечисления ресурсов, выделенных системным таймером. Команда использует идентификатор оборудования системного таймера, ACPI\PNP0100, чтобы указать устройство.

devcon resources *PNP0100

В ответ DevCon отображает ресурсы системного таймера.

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

Следующая команда использует идентификатор экземпляра устройства системного таймера в команде ресурсов DevCon. Символ (@) указывает, что строка является идентификатором экземпляра устройства, а не идентификатором оборудования или совместимым идентификатором.

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

Пример 14. Отображение стека драйверов для устройств хранения

Следующая команда использует операцию DevCon Stack для поиска устройств в классе установки томов и отображения ожидаемого стека драйверов для этих устройств. Знак равенства (=) указывает, что строка является именем класса.

devcon stack =Volume

В ответ DevCon отображает ожидаемый стек для устройств в классе Volume. Возвращаемые данные включают идентификатор экземпляра устройства и описание каждого устройства, GUID и имя класса установки устройства, имена драйверов верхних и нижних фильтров и управление службами (при наличии).

STORAGE\VOLUME\1&30A96598&0&SIGNATURE32323533OFFSET271167600LENGTH6E00D0C00
    Name: Generic volume
    Setup Class: {71A27CDD-812A-11D0-BEC7-08002BE2092F} Volume
    Class upper filters:
        VolSnap
    Controlling service:
        (none)
STORAGE\VOLUME\1&30A96598&0&SIGNATURE32323533OFFSET7E00LENGTH27115F800
    Name: Generic volume
    Setup Class: {71A27CDD-812A-11D0-BEC7-08002BE2092F} Volume
    Class upper filters:
        VolSnap
    Controlling service:
        (none)
2 matching device(s) found.

Пример 15. Поиск класса установки устройства

Операция DevCon Stack возвращает класс установки устройства в дополнение к драйверам верхнего и нижнего фильтров. Следующие команды находят класс установки интерфейса порта принтера, найдя его идентификатор экземпляра устройства, а затем с помощью идентификатора экземпляра устройства для поиска его класса установки.

Следующая команда использует операцию DevCon HwIDs для поиска идентификатора экземпляра устройства интерфейса порта принтера с помощью "LPT", фразы в идентификаторе оборудования порта принтера.

devcon hwids *lpt*

В ответ DevCon возвращает идентификатор экземпляра устройства (отображаемый в полужирном тексте) и идентификатор оборудования интерфейса порта принтера.

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

Следующая команда использует операцию DevCon Stack для поиска класса установки устройства устройства, представленного идентификатором экземпляра устройства. Символ (@) определяет идентификатор как идентификатор экземпляра устройства. Идентификатор заключен в кавычки, так как он включает амперсанды символов.

devcon stack "@LPTENUM\MICROSOFTRAWPORT\5&CA97D7E&0&LPT1"

В ответ DevCon отображает стек драйверов для интерфейса порта принтера, включая класс. Отображение показывает, что порт принтера находится в классе System.

LPTENUM\MICROSOFTRAWPORT\5&CA97D7E&0&LPT1
    Name: Printer Port Logical Interface
    Setup Class: {4D36E97D-E325-11CE-BFC1-08002BE10318} System
    Controlling service:
        (none)
1 matching device(s) found.

Следующая команда использует операцию DevCon Stack для отображения ожидаемого стека для устройств драйвера мини-порта. Он ищет устройства в классе установки Net, имеющие "минипорт" в идентификаторе оборудования или совместимом идентификаторе.

Обратите внимание, что эта команда сначала ограничивает поиск в классе установки Net, а затем находит строку miniport. Он не находит устройства, отличные от устройств в классе установки Net.

devcon stack =net *miniport*

В ответ DevCon отображает ожидаемый стек для драйверов минипорта.

ROOT\MS_L2TPMINIPORT\0000
    Name: WAN Miniport (L2TP)
    Setup Class: {4D36E972-E325-11CE-BFC1-08002BE10318} Net
    Controlling service:
        Rasl2tp
ROOT\MS_PPPOEMINIPORT\0000
    Name: WAN Miniport (PPPOE)
    Setup Class: {4D36E972-E325-11CE-BFC1-08002BE10318} Net
    Controlling service:
        RasPppoe
    Lower filters:
        NdisTapi
ROOT\MS_PPTPMINIPORT\0000
    Name: WAN Miniport (PPTP)
    Setup Class: {4D36E972-E325-11CE-BFC1-08002BE10318} Net
    Controlling service:
        PptpMiniport
    Lower filters:
        NdisTapi
ROOT\MS_PTIMINIPORT\0000
    Name: Direct Parallel
    Setup Class: {4D36E972-E325-11CE-BFC1-08002BE10318} Net
    Controlling service:
        Raspti
    Lower filters:
        PtiLink
4 matching device(s) found.

Пример 17. Отображение состояния всех устройств

Следующая команда использует операцию DevCon Status для поиска состояния всех устройств на локальном компьютере. Затем он сохраняет состояние в файле status.txt для ведения журнала или более поздней проверки. Команда использует дикий карта символ (*) для представления всех устройств и символа перенаправления (>) для перенаправления выходных данных в файл status.txt.

devcon status * > status.txt

Пример 18. Отображение состояния устройства по идентификатору экземпляра устройства

Самый надежный способ найти состояние конкретного устройства — использовать идентификатор экземпляра устройства.

Следующая команда использует идентификатор экземпляра устройства контроллера ввода-вывода на локальном компьютере в команде DevCon Status . Команда содержит идентификатор экземпляра устройства, PCI\VEN_8086&DEV_1130&SUBSYS_00000000&REV_02\3&29E81982&0&00. Префикс символа (@) идентификатор определяет строку как идентификатор экземпляра устройства. Идентификатор должен быть заключен в кавычки, так как он включает амперсанды символов.

devcon status "@PCI\VEN_8086&DEV_1130&SUBSYS_00000000&REV_02\3&29E81982&0&00"

В ответ DevCon отображает состояние контроллера ввода-вывода.

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

  • Диск floppy, FDC\GENERIC_FLOPPY_DRIVE

  • Тома, STORAGE\Volume

  • Диспетчер логических дисков, ROOT\DMIO

  • Диспетчер томов, ROOT\FTDISK

  • Контроллер диска Floppy, ACPI\PNP0700

В команде каждый идентификатор отделяется от других по пробелам. Обратите внимание, что идентификаторы GenDisk и GenCdRom совместимы, а другие идентификаторы — это аппаратные идентификаторы.

devcon status GenDisk GenCdRom FDC\GENERIC_FLOPPY_DRIVE STORAGE\Volume ROOT\DMIO ROOT\FTDISK ACPI\PNP0700

В ответ DevCon отображает состояние каждого устройства.

FDC\GENERIC_FLOPPY_DRIVE\1&3A2146F1&0&0
    Name: Floppy disk drive
    Driver is running.
IDE\CDROMSAMSUNG_DVD-ROM_SD-608__________________2.2_____\4&13B4AFD&0&0.0.0
    Name: SAMSUNG DVD-ROM SD-608
    Driver is running.
IDE\DISKWDC_WD204BA_____________________________16.13M16\4457572D414D373032313633393820312
0202020
    Name: WDC WD204BA
    Driver is running.
ROOT\DMIO\0000
    Name: Logical Disk Manager
    Driver is running.
ROOT\FLOPPYDISK\0000
    Device has a problem: 28.
ROOT\FLOPPYDISK\0002
    Device has a problem: 01.
ROOT\FLOPPYDISK\0003
    Device has a problem: 01.
ROOT\FLOPPYDISK\0004
    Device is currently stopped.
ROOT\FTDISK\0000
    Name: Volume Manager
    Driver is running.
STORAGE\VOLUME\1&30A96598&0&SIGNATUREEA1AA9C7OFFSET1770DF800LENGTH3494AEA00
    Name: Generic volume
    Driver is running.
STORAGE\VOLUME\1&30A96598&0&SIGNATUREEA1AA9C7OFFSET7E00LENGTH1770CFC00
    Name: Generic volume
    Driver is running.
11 matching device(s) found.

Пример 20. Поиск устройств по шаблону идентификатора оборудования

Следующая команда использует операцию DevCon Find для поиска устройств мыши. В частности, команда ищет компьютер для устройств, идентификатор оборудования или совместимый идентификатор которого содержит "mou"., и не найдет драйвер "moose".

devcon find *mou*

В этом случае DevCon обнаружил два устройства мыши.

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

Так как все операции отображения DevCon также находят идентификаторы оборудования, вы можете использовать любую операцию отображения для поиска идентификаторов оборудования. Выберите операцию на основе содержимого, необходимого в выходных данных. Например, чтобы найти драйверы устройств, связанные с мышью, на локальном компьютере, отправьте следующую команду.

devcon driverfiles *mou*

В ответ DevCon находит устройства и перечисляет их драйверы.

HID\VID_045E&PID_0039\6&DC36FDE&0&0000
    Name: Microsoft USB IntelliMouse Optical
    Driver installed from c:\windows\inf\msmouse.inf [HID_Mouse_Inst]. 2 file(s) used by d
river:
        C:\WINDOWS\System32\DRIVERS\mouhid.sys
        C:\WINDOWS\System32\DRIVERS\mouclass.sys
ROOT\RDP_MOU\0000
    Name: Terminal Server Mouse Driver
    Driver installed from c:\windows\inf\machine.inf [RDP_MOU]. 2 file(s) used by driver:
        C:\WINDOWS\System32\DRIVERS\termdd.sys
        C:\WINDOWS\System32\DRIVERS\mouclass.sys
2 matching device(s) found.

Пример 21. Поиск устройств по идентификатору экземпляра устройства или классу

Следующие команды используют операцию DevCon Find для отображения всех устаревших устройств на локальном компьютере. Так как устаревшие устройства не имеют идентификатора оборудования, их необходимо искать по идентификатору экземпляра устройства (путь к реестру), ROOT\LEGACY или классу установки LegacyDriver.

Первая команда находит устаревшие драйверы по шаблону идентификатора экземпляра устройства. Шаблон идентификатора предустановлен символом (@) для указания идентификатора экземпляра устройства и дикого символа карта (*) для поиска всех устройств в подразделе ROOT\Legacy.

devcon find @root\legacy*

Вторая команда находит устаревшие устройства, выполнив поиск всех устройств в классе LegacyDriver.

devcon find =legacydriver

Обе команды создают одинаковые выходные данные, в этом случае найдите те же 27 устаревших устройств.

ROOT\LEGACY_AFD\0000                                        : AFD Networking Support Environment
ROOT\LEGACY_BEEP\0000                                       : Beep
ROOT\LEGACY_DMBOOT\0000                                     : dmboot
ROOT\LEGACY_DMLOAD\0000                                     : dmload
ROOT\LEGACY_FIPS\0000                                       : Fips
ROOT\LEGACY_GPC\0000                                        : Generic Packet Classifier
ROOT\LEGACY_IPSEC\0000                                      : ipsec
ROOT\LEGACY_KSECDD\0000                                     : ksecdd
ROOT\LEGACY_MNMDD\0000                                      : mnmdd
ROOT\LEGACY_MOUNTMGR\0000                                   : mountmgr
ROOT\LEGACY_NDIS\0000                                       : ndis
ROOT\LEGACY_NDISTAPI\0000                                   : Remote Access NDIS TAPI Driver
ROOT\LEGACY_NDISUIO\0000                                    : NDIS Usermode I/O Protocol
ROOT\LEGACY_NDPROXY\0000                                    : NDProxy
ROOT\LEGACY_NETBT\0000                                      : netbt
ROOT\LEGACY_NULL\0000                                       : Null
ROOT\LEGACY_PARTMGR\0000                                    : PartMgr
ROOT\LEGACY_PARVDM\0000                                     : ParVdm
ROOT\LEGACY_RASACD\0000                                     : Remote Access Auto Connection Driver
ROOT\LEGACY_RDPCDD\0000                                     : RDPCDD
ROOT\LEGACY_RDPWD\0000                                      : RDPWD
ROOT\LEGACY_TCPIP\0000                                      : tcpip
ROOT\LEGACY_TDPIPE\0000                                     : TDPIPE
ROOT\LEGACY_TDTCP\0000                                      : TDTCP
ROOT\LEGACY_VGASAVE\0000                                    : VgaSave
ROOT\LEGACY_VOLSNAP\0000                                    : VolSnap
ROOT\LEGACY_WANARP\0000                                     : Remote Access IP ARP Driver
27 matching device(s) found.

Пример 22. Поиск (и поиск всех) устройств в классе установки

Следующая команда использует операцию DevCon FindAll для поиска всех устройств на компьютере в классе установки Net. Знак равенства (=) указывает, что Net является классом установки, а не идентификатором.

devcon findall =net

В ответ DevCon выводит следующие семь устройств в классе установки Net. Первые шесть — это стандартные устройства драйвера минипорта. Седьмое устройство, асинхронный адаптер RAS, — это программное перечисленное устройство (SW\*), которое не установлено до тех пор, пока он не понадобится.

PCI\VEN_10B7&DEV_9200&SUBSYS_00BE1028&REV_78\4&BB7B4AE&0&60F0: 3Com 3C920 Integrated Fast
Ethernet Controller (3C905C-TX Compatible)
ROOT\MS_L2TPMINIPORT\0000                                   : WAN Miniport (L2TP)
ROOT\MS_NDISWANIP\0000                                      : WAN Miniport (IP)
ROOT\MS_PPPOEMINIPORT\0000                                  : WAN Miniport (PPPOE)
ROOT\MS_PPTPMINIPORT\0000                                   : WAN Miniport (PPTP)
ROOT\MS_PTIMINIPORT\0000                                    : Direct Parallel
SW\{EEAB7790-C514-11D1-B42B-00805FC1270E}\ASYNCMAC          : RAS Async Adapter
7 matching device(s) found.

Следующая команда сравнивает операции DevCon Find и DevCon FindAll, выполнив команду DevCon Find с теми же параметрами, что и предыдущая команда DevCon FindAll.

devcon find =net

В ответ DevCon выводит следующие шесть устройств в классе установки Net.

PCI\VEN_10B7&DEV_9200&SUBSYS_00BE1028&REV_78\4&BB7B4AE&0&60F0: 3Com 3C920 Integrated Fast
Ethernet Controller (3C905C-TX Compatible)
ROOT\MS_L2TPMINIPORT\0000                                   : WAN Miniport (L2TP)
ROOT\MS_NDISWANIP\0000                                      : WAN Miniport (IP)
ROOT\MS_PPPOEMINIPORT\0000                                  : WAN Miniport (PPPOE)
ROOT\MS_PPTPMINIPORT\0000                                   : WAN Miniport (PPTP)
ROOT\MS_PTIMINIPORT\0000                                    : Direct Parallel
6 matching device(s) found.

Прогнозируемо, команда DevCon Find , которая возвращает только установленные в настоящее время устройства, не перечисляет программное устройство, так как устройство не установлено.

Пример 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 для загрузки драйвера Disklog после драйвера PartMgr, чтобы он получил данные, которые 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. Команда помещает 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 виртуальный курсор находится в начале списка и не расположен на драйверах фильтров. Если оператор надстройки (+) используется, если курсор не расположен на драйвере, 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 для замены исходной копии MyFilter.sys новой и улучшенной версией MyNewFilter.sys в списке драйверов фильтров для класса установки DiskDrive.

devcon /r classfilter DiskDrive upper !MyFilter +MyNewFilter

В следующем списке показаны драйверы фильтров для класса DiskDrive перед отправкой команды.

    PartMgr
    MyFilter
    Disklog

Первый подкомманд использует оператор удаления (!) для удаления MyFilter из списка драйверов верхнего фильтра для класса DiskDrive. (Это не влияет на файл MyFilter.sys в каталоге C:\Windows\System32\Drivers.)

Вторая подкоманда использует оператор 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 Журнал дисков
Журнал дисков MyNewFilter

Первый подкомманд использует оператор удаления (!) для удаления disklog из списка. Вторая подкоманда использует оператор start (=) для перемещения виртуального курсора обратно в начальную позицию, а затем использует оператор размещения (@) для размещения курсора на драйвере 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 , чтобы включить программируемый контроллер прерываний, который был отключен для исправления системной проблемы. Так как идентификатор оборудования контроллера *PNP0000 включает звездочку, команда использует одинарный символ кавычки (') для направления DevCon для поиска идентификатора оборудования точно так же, как указано в команде. В противном случае звездочка будет интерпретирована как дикий карта символ.

devcon enable '*PNP0000

В ответ DevCon отображает идентификатор экземпляра устройства и объясняет, что для включения устройства необходимо перезагрузить систему.

ACPI\PNP0000\4&B4063F4&0                                    : Enabled on reboot
Not all of 1 device(s) enabled, at least one requires reboot to complete the operation.

Вы можете реагировать, перезагрузив систему вручную или с помощью операции Перезагрузки DevCon.

Следующая команда добавляет параметр /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 отображает идентификатор экземпляра устройства принтера, который он найден в классе принтера и сообщает, что он включен. Хотя команда включала параметр /r , система не перезагружалась, так как перезагрузка не требуется для включения принтера.

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

Пример 30. Отключение устройств по шаблону идентификатора

Следующая команда использует операцию DevCon Disable , чтобы отключить USB-устройства на локальном компьютере. Он определяет устройства по шаблону идентификатора оборудования (USB*). Этот шаблон будет соответствовать любому устройству, аппаратному идентификатору или совместимому идентификатору которого начинается с "USB". Команда включает параметр /r , который перезагружает систему, если необходимо сделать отключение эффективным.

Примечание. Прежде чем использовать шаблон идентификатора для отключения устройства, определите, какие устройства будут затронуты. Для этого используйте шаблон в команде отображения, например USB состояния разработки\* или hwids USB-адрес devcon hwids USB\*.

devcon /r disable USB*

В ответ DevCon отображает идентификаторы экземпляров устройства USB-устройств и сообщает, что они отключены. Хотя команда включала параметр /r , система не перезагружалась, так как перезагрузка не требуется для отключения устройств.

USB\ROOT_HUB\4&2A40B465&0
: Disabled
USB\ROOT_HUB\4&7EFA360&0
: Disabled
USB\VID_045E&PID_0039\5&29F428A4&0&2
: Disabled
3 device(s) disabled.

Пример 31. Отключение устройств по идентификатору экземпляра устройства

Следующая команда использует операцию DevCon Disable , чтобы отключить USB-устройства на локальном компьютере. Эта команда определяет устройства по идентификаторам экземпляра устройства, как указано символом (@), предшествующим каждому идентификатору. Каждый идентификатор экземпляра устройства отделяется от других по пробелу.

Кроме того, поскольку идентификаторы экземпляров устройства включают символ амперсанда (&), они заключены в кавычки. Команда включает параметр /r , который перезагружает систему, если необходимо сделать отключение эффективным.

devcon /r disable "@USB\ROOT_HUB\4&2A40B465&0" "@USB\ROOT_HUB\4&7EFA360&0" "@USB\VID_045E&PID_0039\5&29F428A4&0&2"

В ответ DevCon отображает идентификаторы экземпляров устройства USB-устройств и сообщает, что они отключены. Хотя команда включала параметр /r , система не перезагружалась, так как перезагрузка не требуется для отключения устройств.

USB\ROOT_HUB\4&2A40B465&0
: Disabled
USB\ROOT_HUB\4&7EFA360&0
: Disabled
USB\VID_045E&PID_0039\5&29F428A4&0&2
: Disabled
3 device(s) disabled.

Пример 32. Обновление драйвера для портов связи

Следующая команда использует операцию DevCon Update для замены текущего драйвера устройства для портов связи в системе с помощью тестового драйвера, указанного в файле test.inf. Команда влияет только на устройства, все аппаратные идентификаторы которых * PNP0501 (включая звездочку).

Эту команду можно использовать для замены подписанных драйверов в системе альтернативными драйверами для тестирования или устранения неполадок, а также для связывания устройств с самой новой версией одного и того же драйвера.

devcon update c:\windows\inf\test.inf *PNP0501

В ответ devCon отображает предупреждение о установке оборудования, объясняющее, что драйвер не прошел тестирование логотипа Windows. Если в диалоговом окне нажмите кнопку "Продолжить в любом случае", установка продолжается.

Затем DevCon отображает следующее сообщение об успешном выполнении.

Updating drivers for *PNP0501 from c:\windows\inf\test.inf.
Drivers updated successfully.

Для обновления драйверов можно также использовать операцию DevCon UpdateNI, неинтерактивную версию операции DevCon Update. Операция DevCon UpdateNI идентична операции DevCon Update, за исключением того, что она подавляет все запросы пользователей, для которых требуется ответ и предполагает ответ по умолчанию на запрос.

Следующая команда использует операцию DevCon UpdateNI для установки тестового драйвера.

devcon updateni c:\windows\inf\test.inf *PNP0501

В этом случае DevCon не отображает предупреждение о установке оборудования. Вместо этого предполагается ответ по умолчанию, остановка установки. В результате DevCon не может обновить драйверы и отобразить сообщение об ошибке.

Updating drivers for *PNP0501 from c:\windows\inf\test.inf.
devcon failed.

Пример 33. Установка устройства

Следующая команда использует операцию DevCon Install для установки устройства клавиатуры на локальном компьютере. Команда включает полный путь к INF-файлу для устройства (клавиатура.inf) и идентификатор оборудования (*PNP030b).

devcon /r install c:\windows\inf\keyboard.inf *PNP030b

В ответ DevCon сообщает, что он установил устройство, то есть он создал узел устройства для нового устройства и обновил файлы драйверов для устройства.

Device node created. Install is complete when drivers files are updated...
Updating drivers for *PNPO30b from c:\windows\inf\keyboard.inf
Drivers updated successfully.

Пример 34. Установка устройства с помощью автоматической установки

В следующем примере показано, как установить адаптер Microsoft Loopback во время автоматической установки Microsoft Windows XP.

Чтобы установить это устройство во время автоматической установки, начните с добавления следующих файлов на диск floppy: devcon.exe и netloop.inf (C:\Windows\inf\netloop.inf).

Затем в раздел [GUIRunOnce] файла автоматической установки добавьте следующую команду DevCon:

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

Эта команда определяет адаптер обратного цикла с помощью идентификатора оборудования *MSLOOP. Символ одной кавычки, предшествующий "*MSLOOP", сообщает DevCon интерпретировать строку буквально, то есть интерпретировать звездочку как часть идентификатора оборудования, а не как дикий карта символ.

Команда также указывает, что DevCon использует файл Netloop.inf (на диске floppy) в установке. Параметр /r перезагружает компьютер только в том случае, если перезагрузка необходима для завершения установки.

Наконец, добавьте параметры конфигурации сети в файл автоматической установки и запустите автоматическую настройку.

Пример 35. Удаление устройств по шаблону идентификатора экземпляра устройства

Следующая команда использует операцию DevCon Remove для удаления всех USB-устройств с компьютера. Он определяет устройства по шаблону идентификатора экземпляра устройства, который соответствует любому идентификатору экземпляра устройства (путь реестра), начинающимся со строки "USB\". Символ (@) отличает идентификатор экземпляра устройства от идентификатора оборудования или совместимого идентификатора. Команда также включает параметр /r , который перезагружает систему, если требуется для эффективной процедуры удаления.

Предупреждение

Перед удалением всех устройств с помощью шаблона определите, какие устройства затронуты. Для этого используйте шаблон в команде отображения, например devcon status @usb\* или devcon hwids @usb\*.

devcon /r remove @usb\*

В ответ DevCon отображает идентификатор экземпляра устройства удаленных устройств.

USB\ROOT_HUB\4&2A40B465&0                             : Removed
USB\ROOT_HUB\4&7EFA360&0                              : Removed
USB\VID_045E&PID_0039\5&29F428A4&0&2                  : Removed
3 device(s) removed.

Пример 36. Удаление конкретного сетевого устройства

Следующая команда использует операцию DevCon Remove для удаления мини-порта NDISWAN с локального компьютера. Команда задает класс Net, а затем уточняет поиск, указывая устройства в классе, идентификатор оборудования или совместимый идентификатор которого включает "ndiswan". Команда также включает параметр /r , который перезагружает систему, если перезагрузка требуется для эффективной процедуры удаления.

Предупреждение перед удалением всех устройств с помощью шаблона определите, какие устройства будут затронуты. Для этого используйте шаблон в команде отображения, например devcon status =net *ndiswan или devcon hwids =net *ndiswan*.

devcon /r remove =net *ndiswan*

В ответ DevCon отображает идентификатор экземпляра устройства, которое оно удалило.

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

Пример 37. Проверка компьютера на наличие новых устройств

Следующая команда использует операцию DevCon Rescan для сканирования локального компьютера на новых устройствах.

devcon rescan

В ответ DevCon сообщает, что он сканировал систему, но не нашел новых устройств.

Scanning for new hardware.
Scanning completed.

Пример 38. Перезапуск устройства

Следующая команда использует операцию DevCon Restart для перезапуска адаптера обратного цикла на локальном компьютере. Команда ограничивает поиск классом установки Net и в этом классе указывает идентификатор экземпляра устройства адаптера петли ,@'ROOT\*MSLOOP\0000. Символ (@) определяет строку как идентификатор экземпляра устройства. Символ одной кавычки ('), который запрашивает литеральный поиск, запрещает DevCon интерпретировать звездочку в идентификаторе как дикий карта символ.

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

В ответ DevCon отображает идентификатор экземпляра устройства и сообщает результат.

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

Пример 39. Перезагрузка локального компьютера

Следующая команда использует операцию DevCon Reboot для перезагрузки операционной системы на локальном компьютере и связывания перезагрузки с установкой оборудования. В отличие от параметра /r операция перезагрузки DevCon не зависит от возвращаемого кода от другой операции.

Эту команду можно включить в скрипты и пакетные файлы, требующие перезагрузки системы.

devcon reboot

В ответ DevCon отображает сообщение о том, что он перезагрузит компьютер (перезагрузка локального компьютера).

DevCon использует стандартную функцию ExitWindowsEx для перезагрузки. Если пользователь имеет открытые файлы на компьютере или программе не закроется, система не перезагрузится, пока пользователь не ответил на системные запросы, чтобы закрыть файлы или завершить процесс.

Пример 40. Назначение идентификатора оборудования устаревшему устройству

Следующая команда использует операцию DevCon SetHwID для назначения аппаратного идентификатора, звукового сигнала для устаревшего устройства.

Команда использует идентификатор экземпляра устройства, ROOT\LEGACY_BEEP\0000, так как устаревшее устройство с сигналом не имеет идентификаторов оборудования или совместимых идентификаторов. Он использует символ (@) для указания того, что строка является идентификатором экземпляра устройства.

Команда не использует параметры символов для размещения идентификатора. По умолчанию DevCon добавляет новые идентификаторы оборудования в конец списка идентификаторов оборудования. В этом случае, так как устройство не имеет других аппаратных идентификаторов, размещение не имеет значения.

devcon sethwid @ROOT\LEGACY_BEEP\0000 := beep

В ответ DevCon отображает сообщение, указывающее, что он добавляет сигнал в список идентификаторов оборудования для устройства. Он также отображает результирующий список идентификаторов оборудования. В этом случае в списке есть только один идентификатор оборудования.

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

Пример 41. Добавление идентификатора оборудования ко всем устаревшим устройствам

Следующая команда использует операцию DevCon SetHwID для добавления идентификатора оборудования, устаревшего кода в список аппаратных идентификаторов для всех устаревших устройств.

Команда использует - параметр символа для добавления нового идентификатора оборудования в конец списка идентификаторов оборудования для устройства, если для одного из устройств был создан предпочтительный идентификатор оборудования. Он также использует шаблон идентификатора экземпляра устройства, @ROOT\LEGACY\*чтобы определить устаревшие устройства на компьютере, то есть все устройства, с которых начинается ROOT\LEGACY*идентификатор экземпляра устройства.

devcon sethwid @ROOT\LEGACY* := -legacy

В ответ DevCon отображает результирующий список идентификаторов оборудования для всех затронутых устройств.

ROOT\LEGACY_AFD\0000                                        : legacy
ROOT\LEGACY_BEEP\0000                                    : beep,legacy
ROOT\LEGACY_CRCDISK\0000                                    : legacy
ROOT\LEGACY_DMBOOT\0000                                     : legacy
ROOT\LEGACY_DMLOAD\0000                                     : legacy
ROOT\LEGACY_FIPS\0000                                       : legacy
...
ROOT\LEGACY_WANARP\0000                                     : legacy
Modified 27 hardware ID(s).

После назначения того же идентификатора оборудования группе устройств можно использовать другие операции DevCon для просмотра и изменения устройств в одной команде.

Например, следующая команда отображает состояние всех устаревших устройств.

devcon status legacy

Пример 42. Удаление идентификатора оборудования со всех устаревших устройств

Следующая команда использует операцию DevCon SetHwID для удаления идентификатора оборудования, устаревшего кода из списка аппаратных идентификаторов для всех устаревших устройств.

Команда использует идентификатор оборудования, устаревшую версию, чтобы определить все устройства, имеющие этот идентификатор оборудования. Затем он использует параметр символа ! для удаления устаревшего идентификатора оборудования.

devcon sethwid legacy := !legacy

В ответ DevCon отображает результирующий список идентификаторов оборудования для всех затронутых устройств.

ROOT\LEGACY_AFD\0000                                        :
ROOT\LEGACY_BEEP\0000                                    : beep
ROOT\LEGACY_CRCDISK\0000                                    :
ROOT\LEGACY_DMBOOT\0000                                     :
ROOT\LEGACY_DMLOAD\0000                                     :
ROOT\LEGACY_FIPS\0000                                       :
...
ROOT\LEGACY_WANARP\0000                                     :
Modified 27 hardware ID(s).

Пример 43. Добавление, удаление и замена идентификаторов оборудования

В следующих примерах показано, как использовать различные функции операции DevCon SetHwID.

В этой серии используется вымышленное устройство, DeviceX с идентификатором экземпляра устройства, ROOT\DeviceX\0000. Перед использованием DevCon устройство имело следующий список аппаратных идентификаторов:

Hw3 Hw4

Следующая команда использует + символ для добавления Hw1 и Hw2 в начало списка аппаратных идентификаторов для DeviceX. Так как Hw2 уже отображается в списке, он перемещается, а не добавляется. Команда определяет устройство по идентификатору экземпляра устройства, как указано в символе (@) перед идентификатором.

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

В ответ DevCon отображает новый список идентификаторов оборудования для устройства. Обратите внимание, что Hw1 и Hw2 отображаются в начале списка в указанном порядке.

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

Кроме того, DevCon сообщает, что он изменил один список идентификаторов оборудования, то есть список идентификаторов оборудования одного устройства.

Следующая команда использует символ ! для удаления идентификатора оборудования Hw1 . Затем он перечисляет идентификатор оборудования Hw5 без параметра символа. Без параметров символов SetHwID добавляет идентификатор оборудования в конец списка идентификаторов оборудования для устройства.

Эта команда демонстрирует, что, в отличие от других параметров символов для операции DevCon SetHwID , символ ! применяется только к идентификатору оборудования, который он префиксирует.

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

В ответ DevCon отображает результирующий список идентификаторов оборудования для DeviceX.

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

Следующая команда использует параметр = для замены всех аппаратных идентификаторов в списке deviceX одним идентификатором оборудования DevX.

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

В ответ DevCon отображает результирующий список идентификаторов оборудования для DeviceX.

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

Сообщение об успешном выполнении указывает, что DevCon изменил идентификатор оборудования одного устройства.

Пример 44. Принудительное обновление HAL

В следующем примере показано, как использовать DevCon для обновления HAL на компьютере. В этом примере тестировщик хочет заменить API API UNIPROCESSOR, который лучше всего подходит для компьютера с многопроцессорным APIC HAL для тестирования.

Первая команда использует операцию DevCon SetHwID для изменения идентификатора оборудования HAL с acpiapic_up, идентификатора оборудования для haLs юнипроцессора на acpiapic_mp, идентификатор оборудования для многопроцессорных хэшей.

Необходимо изменить идентификатор оборудования, так как INF-файл для HAL включает драйверы как для однопроцессорных, так и для многопроцессорных hals. Система выбирает наиболее подходящий драйвер из INF-файла на основе идентификатора оборудования устройства. Если не изменить идентификатор оборудования, команда DevCon Update просто переустановит драйвер HAL юнипроцессора.

В следующей команде команда определяет HAL по идентификатору экземпляра ROOT \ACPI_HAL\0000, как указано символом @ , предшествующим идентификатору. Команда использует + символ, чтобы сделать acpiapic_mp первый идентификатор оборудования в списке для HAL. Затем он использует символ ! для удаления идентификатора оборудования acpiapic_up из списка идентификаторов для HAL.

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

В ответ DevCon отображает следующий новый список идентификаторов оборудования для HAL.

ROOT\ACPI_HAL\0000                         : acpiapic_mp
Modified 1 hardware ID(s).

Следующая команда использует операцию DevCon Update для обновления драйвера для HAL.

devcon update c:\windows\inf\hal.inf acpiapic_mp

Затем DevCon отображает следующее сообщение об успешном выполнении.

Updating drivers for acpiapic_mp from c:\windows\inf\hal.inf.
Drivers updated successfully.

Пример 45. Добавление и удаление пакетов драйверов

В следующих примерах показано, как использовать DevCon для добавления, удаления и отображения сторонних пакетов драйверов (OEM) в хранилище драйверов.

Первая команда, команда DevCon Dp_add , копирует INF-файл для примера драйвера Тостера в хранилище драйверов WDK, то есть в каталог %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-файлов в хранилище драйверов, чтобы убедиться, что он не добавляет повторяющийся файл. Например, если повторить команду, чтобы добавить Тостер.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

Эта информация указывает на то, что пакет драйвера, предоставленный корпорацией Майкрософт, с неопределенным классом устройства (Тостером) называется OEM2.inf. Эти сведения можно использовать для удаления пакета драйвера, связанного с файлом.

Следующая команда удаляет файл OEM2.inf из хранилища драйверов, а также связанные с ним файлы INF (PNF) и каталога (CAT). Команда использует имя файла OEM*.inf.

devcon dp_delete oem2.inf

В ответ DevCon отображает сообщение, указывающее, что команда выполнена успешно:

Driver Package 'oem2.inf' deleted.

Имя файла OEM*.inf необходимо в команде DevCon Dp_delete . Если вы пытаетесь использовать исходное имя INF-файла, команда завершается ошибкой, как показано в следующем выходных данных DevCon.

devcon dp_delete C:\WinDDK\5322\src\general\toaster.inf
Deleting the specified Driver Package from the machine failed.
devcon failed.