Примеры консоли устройства (DevCon.exe)
Важно!
PnPUtil поставляется с каждым выпуском Windows и использует самые надежные и безопасные доступные API, и рекомендуется использовать его. Дополнительные сведения об использовании PnPutil вместо devcon см. в разделе Замена DevCon.
Примеры катаготов
В этом разделе приведены примеры следующих команд консоли устройства (DevCon.exe):
DevCon HwIDs
- Пример 1. Поиск всех идентификаторов оборудования
- Пример 2. Поиск идентификаторов оборудования с помощью шаблона
- Пример 3. Поиск идентификаторов оборудования с помощью класса
Классы DevCon
DevCon ListClass
- Пример 6. Перечисление устройств в классе настройки устройства
- Пример 7. Перечисление устройств в нескольких классах
DevCon DriverFiles
- Пример 8. Вывод списка всех файлов драйверов
- Пример 9. Перечисление файлов драйверов определенного устройства
DevCon DriverNodes
- Пример 10. Перечисление пакетов драйверов по шаблону идентификатора оборудования
- Пример 11. Перечисление пакетов драйверов по шаблону идентификатора экземпляра устройства
Ресурсы DevCon
- Пример 12. Перечисление ресурсов класса устройств
- Пример 13. Перечисление ресурсов устройства по идентификатору
DevCon Stack
- Пример 14. Отображение стека драйверов для устройств хранения
- Пример 15. Поиск класса установки устройства
- Пример 16. Отображение стека для связанных устройств
Состояние DevCon
- Пример 17. Отображение состояния всех устройств на локальном компьютере
- Пример 18. Отображение состояния устройства по идентификатору экземпляра устройства
- Пример 19. Отображение состояния связанных устройств
DevCon Find
- Пример 20. Поиск устройств по шаблону идентификатора оборудования
- Пример 21. Поиск устройств по идентификатору экземпляра устройства или классу
DevCon FindAll
DevCon ClassFilter
- Пример 23. Отображение драйверов фильтров для класса установки
- Пример 24. Добавление драйвера фильтра в класс установки
- Пример 25. Вставка драйвера фильтра в список классов
- Пример 26. Замена драйвера фильтра
- Пример 27. Изменение порядка драйверов фильтров
Включить DevCon
Отключение DevCon
- Пример 30. Отключение устройств по шаблону идентификатора
- Пример 31. Отключение устройств по идентификатору экземпляра устройства
Обновление DevCon и UpdateNI
Установка DevCon
DevCon Remove
- Пример 35. Удаление устройств по шаблону идентификатора экземпляра устройства
- Пример 36. Удаление определенного сетевого устройства
Повторное сканирование DevCon
Перезапуск DevCon
Перезагрузка DevCon
DevCon SetHwID
- Пример 40. Назначение идентификатора оборудования устаревшему устройству
- Пример 41. Добавление идентификатора оборудования для всех устаревших устройств
- Пример 42. Удаление идентификатора оборудования со всех устаревших устройств
- Пример 43. Добавление, удаление и замена идентификаторов оборудования
- Пример 44. Принудительное обновление HAL
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.
В этом случае фраза "дискета" встречается в идентификаторе оборудования или совместимом идентификаторе только одного устройства на компьютере. Если это происходит в идентификаторе нескольких устройств, в выходных данных отображаются все устройства с идентификаторами "гибких дисков".
Пример 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.
Пример 16. Отображение стека для связанных устройств
Следующая команда использует операцию 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.
Пример 19. Отображение состояния связанных устройств
Следующая команда использует операцию 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.