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

Важно!

PnPUtil поставляется с каждым выпуском Windows и использует самые надежные и безопасные ДОСТУПНЫе API, и рекомендуется использовать его. Дополнительные сведения об использовании PnPutil вместо devcon см. в разделе Замена DevCon.

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

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

Идентификаторы HwID DevCon

Классы DevCon

DevCon ListClass

Файлы драйверов DevCon

DevCon DriverNodes

Ресурсы DevCon

DevCon Stack

Состояние DevCon

Поиск DevCon

DevCon FindAll

DevCon ClassFilter

Включить DevCon

Отключить DevCon

Обновление DevCon и UpdateNI

Установка DevCon

Удаление DevCon

Повторное сканирование DevCon

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

Пример 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 , которая возвращает список и описание всех классов на компьютере.

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. Этот класс включает контроллеры IDE. Знак равенства (=) добавляется к "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 resources. Символ в (@) указывает, что строка является идентификатором экземпляра устройства, а не идентификатором оборудования или совместимым идентификатором.

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

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

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

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, у которых в идентификаторе оборудования или совместимом идентификаторе есть "miniport".

Обратите внимание, что эта команда сначала ограничивает поиск классом установки 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

  • Дисковод КОМПАКТ-дисков, GenCdRom

  • Дисковод гибких дисков, FDC\GENERIC_FLOPPY_DRIVE

  • Тома, ХРАНИЛИЩЕ\Том

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

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

  • Контроллер гибких дисков, ACPI\PNP0700

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

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

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

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

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

Следующая команда использует операцию DevCon Find для поиска устройств с мышью. В частности, команда выполняет поиск на компьютере устройств, идентификатор оборудования или совместимый идентификатор которого включает "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 также находят идентификаторы оборудования, вы можете использовать любую операцию отображения для поиска идентификаторов оборудования. Выберите операцию в зависимости от содержимого, необходимого в выходных данных. Например, чтобы найти драйверы устройств, которые используют устройства, связанные с мышью, на локальном компьютере, отправьте следующую команду.

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. Так как эта команда не содержит операторов classfilter, 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 обработает все подкоманды classfilter, виртуальный курсор находится в начале списка и не располагается ни на одном из драйверов фильтров. Если вы используете оператор 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 (+) для добавления 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

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

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

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

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

devcon /r enable =Printer

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

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

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

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

Примечание Прежде чем использовать шаблон идентификатора для отключения устройства, определите, какие устройства будут затронуты. Для этого используйте шаблон в команде отображения, например devcon status 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 для отключения 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 для замены текущего драйвера устройства для коммуникационных портов в системе на тестовый драйвер, указанный в файле 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 . Операция DevCon UpdateNI идентична операции Обновления DevCon , за исключением того, что она подавляет все запросы пользователей, требующие ответа, и предполагает ответ по умолчанию на запрос.

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

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

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

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

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

Следующая команда использует операцию DevCon Install для установки устройства с клавиатурой на локальном компьютере. Команда содержит полный путь к INF-файлу устройства (keyboard.inf) и идентификатор оборудования (*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.

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

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

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

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

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

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

Пример 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 для перезапуска адаптера замыкания на себя на локальном компьютере. Команда ограничивает поиск классом установки Net и в этом классе задает идентификатор экземпляра устройства адаптера замыкания на себя, @'ROOT\*MSLOOP\0000. Символ at (@) идентифицирует строку как идентификатор экземпляра устройства. Символ одной кавычки ('), который запрашивает литеральный поиск, не позволяет DevCon интерпретировать звездочку в идентификаторе как подстановочный знак.

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

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

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

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

Следующая команда использует операцию Перезагрузка DevCon для перезагрузки операционной системы на локальном компьютере и связывания перезагрузки с установкой оборудования. В отличие от параметра /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 для добавления устаревшего идентификатора оборудования в список идентификаторов оборудования для всех устаревших устройств.

Команда использует - параметр symbol, чтобы добавить новый идентификатор оборудования в конец списка идентификаторов оборудования для устройства, если для одного из устройств был создан предпочтительный идентификатор оборудования. Он также использует шаблон идентификатора экземпляра устройства , @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 для удаления устаревшего идентификатора оборудования из списка идентификаторов оборудования для всех устаревших устройств.

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

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 без параметра symbol. Без параметров символов 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 APIC, который лучше всего подходит для компьютера, многопроцессорным API APCI HAL для целей тестирования.

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

Необходимо изменить идентификатор оборудования, так как INF-файл для HAL содержит драйверы как для однопроцессорных, так и для многопроцессорных библиотек HAL. Система выбирает наиболее подходящий драйвер из 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.

В команде 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.