Жёлтый восклицательный знак на устройстве в диспетчере это половина сообщения. Вторая половина прячется в его свойствах, где система коротко сообщает, что именно не так, и присваивает беде номер. Этот номер, код ошибки, не пустая формальность, а готовый диагноз. За сухим "Код 43" или "Код 28" стоит конкретная причина, и понимание этих кодов превращает гадание на кофейной гуще в осмысленный ремонт. Одно дело видеть, что устройство не работает, и совсем другое знать, что оно осталось без драйвера, или что система его остановила, или что виноват конфликт ресурсов.
Беда в том, что коды эти на первый взгляд непрозрачны. Система выдаёт номер и сухую формулировку, а что с этим делать, не объясняет. Между тем у каждого кода своя типичная причина и свой набор решений, и эти решения часто диаметрально разные. Лечить код отсутствия драйвера так же, как код конфликта ресурсов, бесполезно. Разобравшись в значениях самых частых кодов, человек сразу понимает, в какую сторону копать, и не тратит часы на починку того, что ломалось совсем по другой причине.
Где найти код ошибки и как прочитать его правильно
Прежде чем расшифровывать, код нужно увидеть, и тут многие останавливаются на полпути. Жёлтый значок в диспетчере устройств это лишь индикатор, а сам код спрятан глубже. Чтобы добраться до него, открывают диспетчер устройств, находят проблемное устройство с пометкой и заходят в его свойства. На общей вкладке свойств в области состояния устройства система и пишет короткую фразу о проблеме вместе с её кодом.
Эта область состояния это сердце диагностики. Здесь не только номер кода, но и человеческая формулировка проблемы, иногда с подсказкой о возможном решении. Стоит прочитать текст целиком, а не выхватывать одну цифру, потому что формулировка нередко уточняет ситуацию. Два устройства с одним кодом могут иметь разные приписки, и эти нюансы направляют ремонт. Полезно и то, что рядом со статусом система иногда предлагает кнопку с готовым действием, например переустановить драйвер или включить устройство, что ускоряет переход от диагноза к лечению.
Для тех, кто работает из командной строки, код проблемы доступен и без графики. Перечисление проблемных устройств показывает их вместе с кодами, что удобно при удалённой работе или диагностике без рабочего стола. Команда выводит только устройства, у которых что-то не в порядке, сразу с их кодами:
pnputil /enum-devices /problem
Этот вывод заменяет обход свойств каждого устройства мышкой. По нему сразу видно весь фронт проблем и коды каждой, что особенно ценно, когда неисправных устройств несколько. Тем, кто работает в PowerShell, доступен ещё и запрос свойства с кодом проблемы для конкретного устройства по его идентификатору, что позволяет вытащить именно цифру кода для дальнейшей обработки в скрипте. Получив код, переходят к его расшифровке, и здесь начинается осмысленная часть работы.
Код двадцать восемь и его родственники по теме драйверов
Самая частая группа кодов связана с драйверами, и самый дружелюбный из них код двадцать восемь. Он прямо сообщает, что драйверы для устройства не установлены. Это не поломка и не конфликт, а просто пробел: система видит железо, но не знает, как с ним говорить. Лечение очевидно и приятно своей предсказуемостью, нужно найти и поставить подходящий драйвер. После установки код исчезает, и устройство оживает.
Близок к нему по смыслу код тридцать один, который гласит, что устройство работает неправильно, потому что система не смогла загрузить нужные драйверы. Здесь драйвер вроде бы есть, но загрузить его не выходит, что указывает на повреждение пакета или его несовместимость. Решение обычно сводится к переустановке драйвера начисто: сначала удаляют сбойный пакет, затем ставят рабочий, желательно свежий с сайта производителя. Код тридцать один коварнее двадцать восьмого именно тем, что простая доустановка тут не всегда помогает, нужна именно чистая переустановка.
Особняком стоит код тридцать два, сообщающий, что драйвер или служба устройства отключены. Причина часто лежит не в самом драйвере, а в системном реестре или в том, что служба запуска драйвера выключена. Лечат это переустановкой драйвера или возвратом системы к рабочему состоянию через точку восстановления. Объединяет всю эту группу одно: проблема в программной части, в драйвере, и решается она работой именно с ним, а не с железом.
Код сорок три когда система сама остановила устройство
Отдельного разговора заслуживает код сорок три, один из самых неприятных и неоднозначных. Он означает, что система остановила устройство, потому что оно сообщило о неполадках. Формулировка обтекаемая, и за ней может скрываться многое, от сбоя драйвера до начинающегося отказа самого железа. Именно эта многоликость делает код сорок три головной болью, ведь причина не названа прямо.
Чаще всего код сорок три встречается у видеокарт и USB-устройств. У USB он нередко лечится простым переподключением или перезагрузкой, потому что устройство просто временно сбойнуло и система перестраховалась. Помогает и удаление устройства в диспетчере с последующим повторным обнаружением, что заставляет систему заново наладить с ним связь. Если устройство обновляли перед появлением ошибки, разумно откатить драйвер на прежнюю версию, ведь именно неудачное обновление могло спровоцировать остановку. На практике у видеокарт код сорок три часто всплывает сразу после установки свежего драйвера, и откат на проверенный выпуск возвращает картинку быстрее любых других мер.
Когда же ни переподключение, ни переустановка драйвера, ни откат не помогают, код сорок три начинает указывать в сторону аппаратной проблемы. Перегрев видеокарты, отходящий контакт, начинающийся отказ компонента, всё это устройство может сообщать системе как неполадку. Поэтому код сорок три проходят по лесенке: сначала самые лёгкие программные средства, и лишь когда они исчерпаны, всерьёз задумываются о состоянии самого железа. Такой порядок бережёт от поспешного вывода о поломке там, где помог бы простой перезапуск.
Коды конфликтов ресурсов и отключённых устройств
Не все коды про драйверы, и путать их природу значит лечить не то. Есть группа кодов, связанных с ресурсами и состоянием устройства, и подход к ним совсем иной. Когда два устройства не могут поделить системные ресурсы вроде диапазонов памяти или линий прерываний, возникает конфликт, и виновное устройство получает соответствующий код. Установка драйвера тут бесполезна, потому что драйвер ни при чём, разбирать нужно именно распределение ресурсов.
Коды, говорящие об отключённом устройстве, и вовсе означают, что с драйвером всё в порядке, просто узел выключен. Бывает, что устройство отключили намеренно, бывает, что это сделала система или другая программа. Лечение простое и не имеет отношения к драйверам, устройство включают обратно. Через командную строку включение и отключение устройства по его идентификатору выполняется парой симметричных команд, что удобно при работе со скриптами:
pnputil /disable-device "ACPI\PNP0A03\2&daba3ff&0"
pnputil /enable-device "ACPI\PNP0A03\2&daba3ff&0"
Встречается и код, сообщающий, что устройство заблокировано системой из-за известных проблем совместимости с данной версией Windows. Здесь система намеренно не даёт устройству работать, считая его опасным или несовместимым, и выход обычно в обращении к производителю за обновлённым драйвером. Главный вывод из этой группы прост: прежде чем кидаться устанавливать драйверы, стоит прочитать, о чём именно говорит код, ведь добрая половина проблем драйверов вообще не касается.
Универсальная последовательность диагностики по коду
Каким бы ни был код, есть разумный порядок действий, который подходит почти всегда и экономит время. Он строится от простого к сложному, чтобы не начинать со сложного ремонта там, где помогла бы элементарная мера. Первый шаг всегда чтение полного текста ошибки в свойствах, а не одной цифры. Формулировка часто сама подсказывает направление, и пренебрегать ею расточительно.
Второй шаг это самые лёгкие средства, которые лечат удивительно много проблем. Перезагрузка системы, переподключение устройства, перезапуск устройства без полной перезагрузки через команду перезапуска по идентификатору. Эта команда снимает и заново навешивает драйвер, что встряхивает зависшее устройство:
pnputil /restart-device "USB\VID_046D&PID_C52B\5&1a2b3c4d&0&2"
Если лёгкие меры не помогли, переходят к драйверу: удаляют сбойный пакет и ставят свежий с сайта производителя, а при недавнем обновлении пробуют откат. И только когда вся программная часть отработана впустую, всерьёз рассматривают аппаратную причину, особенно при кодах вроде сорок третьего, которые умеют сигналить о реальной поломке. Такая лесенка от простого к сложному не даёт перескочить через дешёвое решение к дорогому и бережёт нервы.
Помощники системы и журнал событий в дополнение к коду
Код в свойствах устройства это не единственный источник сведений о проблеме. У Windows есть встроенные помощники, которые дополняют картину и порой подсказывают решение быстрее ручного разбора. Первый из них это средство устранения неполадок оборудования, которое прогоняет устройство через серию проверок и предлагает типовые исправления. Оно не всесильно и часто ограничивается общими советами, но как первый автоматический заход экономит время, особенно на простых случаях вроде отключённого устройства или сбойнувшей службы.
Куда богаче на детали журнал событий системы. Когда устройство сбоит, система нередко оставляет в журнале запись с подробностями, которых нет в коротком коде свойств. Там можно найти время сбоя, имя замешанного драйвера, конкретную причину остановки. Это особенно выручает с расплывчатыми кодами вроде сорок третьего, где сам код причину не называет, а вот запись в журнале способна указать на конкретный драйвер или событие, после которого начались неполадки.
Связка кода ошибки, средства устранения неполадок и журнала событий даёт объёмную картину вместо плоской цифры. Код задаёт общее направление, средство устранения неполадок пробует очевидное, а журнал добавляет недостающие детали для сложных случаев. Опытный человек не ограничивается одним источником, а сопоставляет их показания, и именно на пересечении этих данных часто и обнаруживается настоящая причина, которую по одному коду не разглядеть.
Когда код врёт и проблема глубже чем кажется
Коды ошибок полезны, но не всесильны, и слепо доверять им тоже не стоит. Иногда код указывает на следствие, а не на причину, и буквальное следование его подсказке заводит в тупик. Классический пример это устройство, которое после серьёзного сбоя или повреждения системных файлов показывает код, формально относящийся к драйверу, тогда как корень беды в повреждённой системе.
На такой случай держат в уме проверку целостности системных файлов, которая чинит повреждённые компоненты Windows. Когда несколько устройств разом начинают сыпать кодами без видимой причины, или код упорно возвращается после всех правильных действий, разумно проверить саму систему, а не воевать с каждым устройством по отдельности. Восстановление системных файлов нередко снимает целую россыпь странных кодов одним махом, потому что лечит общую причину.
Стоит помнить и о том, что код отражает картину на момент осмотра, а она бывает временной. Устройство, сбойнувшее однажды из-за случайного сбоя питания или помехи, после перезагрузки работает как ни в чём не бывало, а тревожный код исчезает сам. Поэтому повторное появление кода куда важнее единичного: разовая ошибка часто прощается системой, а вот настойчиво возвращающийся код это уже устойчивая проблема, требующая разбирательства. Умение отличать случайный сбой от системного и читать за кодом его настоящую причину превращает диспетчер устройств из источника тревоги в точный диагностический прибор.