Driver Verifier — выявляем проблемные драйвера Windows

12.07.2019

itpro

Windows 8

комментариев 10
Утилита Driver Verifier входит в состав всех версий Windows, начиная с Windows XP, и позволяет выполнять проверку драйверов, выявлять проблемные драйвера, являющиеся причиной синего экрана смерти (BSOD — Blue Screen of Death) и записывать подробную информацию о проблемном драйвере в дамп памяти для дальнейшего анализа. Утилита подвергает проверяемые драйвера различным «стресс-тестам», имитируя различные экстремальные условия: нехватка памяти, контроль I/O, IRQL, взаимные блокировки, проверки DMA, IRP и пр. Т.е. имитируются ситуации, которые на продуктивных системах случаются нечасто, и отслеживается поведения драйвера в них. Цель работы утилиты – выявить ситуации, при которых драйвер может привести к аварийному завершению работы системы с BSOD.
Исполняемый файл утилиты Driver Verifier называется Verifier.exe и находится в каталоге %windir%\system32. Есть два варианта использования утилиты: из командой строки или с помощью графического интерфейса.
Важно! Перед выполненном проверки драйверов настоятельно рекомендуем создать точку восстановления системы и добавить безопасный режим в меню загрузки Windows 8. Это поможет отключить режим отладки и вернуться к исходному состоянию системы, если что-то пойдет не так.
Чтобы включить режим проверки драйверов в Windows 8, запустите утилиту Driver Verifier, набрав
verifier

В списке задач выберите Create custom settings (for code developers) и нажмите Next.

Убедитесь, что выбраны опции Standard settings, Force pending I/O requests и IRP Logging. Нажмите Next.

Далее выберите Select driver names From a list.

Отсортируйте содержимое таблицы, щелкнув по заголовку столбца «Provider» и в списке драйверов выберите те, которые необходимо протестировать. В нашем примере мы запустим проверку для всех драйверов, разработчиком которых не является Microsoft Corporation. Мы выбрали драйвера: e1g6032e.sys (Intel) и lsi_sas.sys (LSI).

Примечание. Наличие у драйвера цифровой подписи Microsoft свидетельствует, о том, что драйвер протестирован определенным образом на стабильность работы и его код не был модифицирован после этого. Именно поэтому не рекомендуется отключать проверку цифровой подписи драйверов или пользоваться самоподписанными драйверами.
Осталось нажать Finish и появится информационно окно о том, что для вступления изменений в силу нужно перезагрузить систему.

Совет. Режим проверки для драйвера можно включить и из командной строки. Например, чтобы запустить Driver Verifier со стандартными настройками для драйвера myPCDriver.sys, команда будет выглядеть так:
verifier /standard /driver myPCDriver.sys
После перезагрузки система загружается в режиме проверки драйверов. Driver Verifier работает в фоновом режиме, выполняя различные виды тестирования выбранных драйверов на предмет выявления ошибок. Используйте компьютер как обычно и дождитесь появления BSOD. Если вы знаете, какие действия приводили ранее к аварийному завершению работы системы, повторите их. В случае появления BSOD необходимо скопировать файл дампа памяти (по умолчанию сохраняются в каталоге C:\Windows\Minidump\*.dmp) и проанализировать его с помощью Windbg или аналога.
Важно! После активации режима отладки драйверов с помощью Driver Verifier, этот режим будет работать до тех пор, пока не будет отключен принудительно.
В том случае, если в течении 1-2 дней проблема не повторилась, то с определенной степенью достоверности можно сделать вывод, что проверяемые драйвера не являются причиной падения системы и режим проверки для них можно отключить.
Совет. Использование средства проверки драйверов Windows существенно замедляет работу Windows, поэтому не рекомендуется постоянно работать в таком режиме.
Отключить проверку Driver Verifier можно из командной строки:
Verifier /reset
Или из графического интерфейса, выбрав пункт Delete existing settings.

В том случае, если в нормальном режиме войти в систему не получается, отключить режим отладки можно и из безопасного режима.
В том случае, если и в безопасном режиме система не загружается, попробуйте удалить следующие ключи в реестре в офлайн режиме, загрузившись с загрузочного диска:
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\VerifyDrivers
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\VerifyDriverLevel
Проверить текущий статус утилиты Driver Verifier можно так:
verifier /query
Предыдущая статья Следующая статья
Читайте далее в разделе Windows 8



Ограниченный доступ к Wi-Fi сети в Windows 10 / 8.1: решаем проблему
Пропала языковая панель в Windows 8. Что делать?
Автоматическое монтирование VHD/VHDX-диска при загрузке Windows
Как отключить UAC для определенной программы в Windows 10?
Средство проверки драйверов
Средство проверки драйверов отслеживает драйверы в режиме ядра Windows и графические драйверы для обнаружения недопустимых вызовов функций или действий, которые могут повредить систему. Средство проверки драйверов может подвергать драйверы Windows различным нагрузкам и тестам, чтобы обнаружить неправильное поведение. Вы можете настроить тесты для запуска, что позволяет поставить драйвер через тяжелые нагрузки или более упрощенное тестирование. Вы также можете запустить средство проверки драйверов на нескольких драйверах одновременно или на одном драйвере одновременно.
- Запуск средства проверки драйверов может привести к аварийному завершению работы компьютера.
- Средство проверки драйверов следует запускать только на компьютерах, которые используются для тестирования и отладки.
- Чтобы использовать средство проверки драйверов, необходимо быть в группе Администраторы на компьютере.
Где можно скачать средство проверки драйверов?
Вам не нужно скачивать средство проверки драйверов, так как оно входит в состав большинства версий Windows в %WinDir%\system32\ как Verifier.exe. (Средство проверки драйверов не входит в состав Windows 10 S, поэтому рекомендуется протестировать поведение драйвера на Windows 10.) Средство проверки драйверов не распространяется отдельно в виде пакета для скачивания.
Сведения об изменениях в средстве проверки драйверов для Windows 10 и предыдущих версий Windows см. в статье Проверка драйверов: новые возможности.
Когда следует использовать средство проверки драйверов
Запустите средство проверки драйверов на протяжении всего процесса разработки и тестирования драйвера. В частности, используйте средство проверки драйверов для следующих целей:
- Поиск проблем на ранних этапах цикла разработки, когда их проще и дешевле устранять.
- Для устранения неполадок и отладки тестовых сбоев и сбоев компьютера.
- Мониторинг поведения при развертывании драйвера для тестирования с помощью WDK, Visual Studio и тестов из комплекта оборудования Windows (Windows HLK) или комплекта сертификации оборудования Windows (для Windows 8.1). Дополнительные сведения о тестировании драйверов см. в разделе Тестирование драйвера.
Запуск средства проверки драйверов
Средство проверки драйверов следует запускать только на тестовых компьютерах или на тестируемых и отладочных компьютерах. Чтобы получить максимальную пользу от средства проверки драйверов, следует использовать отладчик ядра и подключиться к тестовом компьютеру. Дополнительные сведения о средствах отладки см. в статье Средства отладки для Windows (WinDbg, KD, CDB, NTSD).
- Запустите окно командной строки , выбрав Запуск от имени администратора и введите verifier , чтобы открыть диспетчер проверки драйверов.
- Выберите Создать стандартные параметры (задача по умолчанию) и нажмите кнопку Далее. Вы также можете нажать кнопку Создать настраиваемые параметры , чтобы выбрать один из предопределенных параметров или выбрать отдельные параметры. Дополнительные сведения см. в разделах Параметры средства проверки драйверов и классы правил и Выбор параметров средства проверки драйверов.
- В разделе Выбор проверяемых драйверов выберите одну из схем выбора, описанных в следующей таблице.
| Параметр | Рекомендации по использованию |
|---|---|
| Автоматический выбор неподписанных драйверов | Полезно для тестирования на компьютерах под управлением версий Windows, для которых не требуются подписанные драйверы. |
| Автоматический выбор драйверов, созданных для более ранних версий Windows | Полезно для тестирования совместимости драйверов с более новыми версиями Windows. |
| Автоматический выбор всех драйверов, установленных на этом компьютере | Обеспечивает максимальный охват с точки зрения количества драйверов, тестируемых в системе. Этот параметр удобен для тестовых сценариев, в которых драйвер может взаимодействовать с другими устройствами или драйверами в системе. Этот параметр также может исчерпать ресурсы, доступные для специального пула и отслеживания некоторых ресурсов. Тестирование всех драйверов также может негативно повлиять на производительность системы. |
| Выбор имен драйверов из списка | В большинстве случаев требуется указать, какие драйверы следует тестировать. Выбор всех драйверов в стеке устройств позволяет параметру Расширенная проверка ввода-вывода отслеживать объекты и проверка соответствие требованиям, так как пакет запроса ввода-вывода передается между каждым из драйверов в стеке, что позволяет предоставлять более подробные сведения при обнаружении ошибки. Выберите один драйвер, если вы используете тестовый сценарий, который измеряет показатели производительности системы или драйвера, или если вы хотите выделить наибольшее количество доступных ресурсов для обнаружения повреждений памяти или проблем с отслеживанием ресурсов (например, взаимоблокировок или мьютексов). Параметры проверки специальных пулов и операций ввода-вывода более эффективны при использовании для одного драйвера за раз. |
При использовании средства проверки драйверов с Windows версий от 20150 до 25126, если вы выбрали ntoskrnl , может появиться сообщение об ошибке недопустимого состояния.
Чтобы избежать этой проблемы, снимите флажок ntoskrnl или выполните обновление до версии Windows после сборки 25126.
Запуск средства проверки драйверов в командной строке
Вы также можете запустить средство проверки драйверов в окне командной строки, не запуская диспетчер проверки драйверов. Например, чтобы запустить средство проверки драйверов со стандартными параметрами драйвера с именемmyDriver.sys, используйте следующую команду:
verifier /standard /driver myDriver.sys
Дополнительные сведения о параметрах командной строки см. в разделе Синтаксис команды средства проверки драйверов.
Управление средством проверки драйверов
Для управления проверкой драйверов можно использовать диспетчер проверки драйверов или командную строку. Сведения о запуске диспетчера проверки драйверов см. в разделе Запуск средства проверки драйверов выше в этой статье.
Для каждого из следующих действий можно использовать диспетчер проверки драйверов или ввести командную строку.
Остановка или сброс средства проверки драйверов
-
В диспетчере проверки драйверов выберите Удалить существующие параметры, а затем нажмите кнопку Готово. или В командной строке введите следующую команду.
verifier /reset
Просмотр статистики средства проверки драйверов
В диспетчере проверки драйверов выберите Отобразить сведения о проверенных драйверах, а затем нажмите кнопку Далее. Далее отображаются дополнительные сведения.
В командной строке введите следующую команду.
verifier /query
Просмотр параметров средства проверки драйверов
В диспетчере проверки драйверов выберите Отобразить существующие параметры, а затем нажмите кнопку Далее.
В командной строке введите следующую команду.
verifier /querysettings
Отладка нарушений средства проверки драйверов
Чтобы получить максимальную пользу от средства проверки драйверов, следует использовать отладчик ядра и подключить его к тестовом компьютеру. Общие сведения о средствах отладки для Windows см. в статье Средства отладки для Windows (WinDbg, KD, CDB, NTSD).
Если средство проверки драйверов обнаруживает нарушение, он создает ошибку, проверка остановить компьютер. Это позволяет получить максимально возможные сведения для отладки проблемы. Если у вас есть отладчик ядра, подключенный к тестовом компьютеру с проверкой драйверов, и средство проверки драйверов обнаруживает нарушение, Windows врывается в отладчик и отображает краткое описание ошибки.
Все нарушения, обнаруженные средством проверки драйверов, приводят к проверке ошибок. Обычно это 0xC4 проверки ошибок. Дополнительные сведения см. в разделах Отладка 0xC4 проверки ошибок: DRIVER_VERIFIER_DETECTED_VIOLATION и 0xC4 проверки ошибок: DRIVER_VERIFIER_DETECTED_VIOLATION.
Ниже перечислены другие коды проверка ошибок.
- 0xC1 проверки ошибок: SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION
- 0xC6 проверки ошибок: DRIVER_CAUGHT_MODIFYING_FREED_POOL
- 0xC9 проверки ошибок: DRIVER_VERIFIER_IOMANAGER_VIOLATION
- 0xD6 проверки ошибок: DRIVER_PAGE_FAULT_BEYOND_END_OF_ALLOCATION
- 0xE6 проверки ошибок: DRIVER_VERIFIER_DMA_VIOLATION
При запуске нового сеанса отладки используйте команду расширения отладчика !analyze. В режиме ядра команда !analyze отображает сведения о последней ошибке проверка. Чтобы отобразить дополнительные сведения, чтобы определить неисправный драйвер, добавьте параметр -v в команду в командной строке kd> :
kd> !analyze -v
В дополнение к !analyze можно ввести следующие расширения отладчика в командной строке kd> , чтобы просмотреть сведения, относящиеся к проверке драйверов:
-
Дампы !verifier захватывают статистику средства проверки драйверов. Используйте !verifier -? для отображения всех доступных параметров.
kd> !verifier
kd> !deadlock
kd> !iovirp 947cef68
Как найти неисправный драйвер на компьютере? Диспетчер проверки драйверов

Неисправный драйвер может вызвать много проблем в работе компьютера. Главный признак того, что на вашем компьютере есть неисправный драйвер – это синий экран смерти, которые часто вызван отключением драйвера.
В этой статье мы расскажем, как можно найти неисправный драйвер, после чего обновить его или полностью удалить.
Иногда Windows уведомляет пользователя о том, что один из драйверов вышел из строя. Однако, бывает, что система не может обнаружить в чем проблема, поэтому не выдает сообщений об ошибке, из-за чего работает медленнее или не так как требуется. В этом случае Диспетчер проверки драйверов (Driver Verifier) создает дополнительную нагрузку на системные драйверы, тем самым пытается вызвать сбой. Если сбой одного из драйверов произойдет, тогда Диспетчер проверки драйверов сообщит о проблеме с помощью синего экрана.
Предупреждение
Прежде чем использовать Диспетчер проверки драйверов, обратите внимание, что инструмент может ограничить вас от использования вашего собственного компьютера. Поскольку Диспетчер проверки драйверов запускает синий экран смерти, когда обнаруживает неисправный драйвер, это может вызвать большие проблемы при загрузке Windows.
Если у вас не будет возможности попасть в Windows, чтобы отключить тестирование драйверов, компьютер будет работать в цикле «boot -> load -> crash» из которого довольно сложно выйти. Функция Automatic Repair является одним из немногих вариантов получить доступ к Windows, но лучше не допускать такой ситуации.
Перед использованием Driver Verifier убедитесь, что у вас есть хотя бы один из следующих аварийных выходов:
- Вы можете перейти в безопасный режим. Переход в безопасный режим до начала загрузки Windows обычно выполняется путем многократного нажатия F8 во время загрузки компьютера. Однако, новые компьютеры загружаются так быстро, что вы просто не успеете нажать F8 в нужный момент.
- Вы создали точку восстановления системы перед использованием Диспетчер проверки драйверов. Также желательно иметь установочный диск Windows, чтобы вы могли восстановить компьютер к заводским настройкам.
Как запустить Диспетчер проверки драйверов
Прежде чем начать инструкцию по использованию Диспетчера проверки драйверов, убедитесь, что вы прочитали раздел «Предупреждение» выше. Там написано как избежать бесконечной загрузки Windows.
Когда вы на сто процентов уверены, что у вас есть аварийный план выхода, нажмите «Windows Key + R» и введите cmd в диалоговом окне «Выполнить», затем нажмите «ОК».

В командном окне введите:
verifier

Во всплывающем окне выберите «Создать нестандартные параметры (для кода программ)», затем нажмите «Далее».

Вы увидите список всех тестов, которые вы можете выполнить для проверки драйверов. Выберите все тесты из списка, кроме «Симуляция случайно нехватки ресурсов» и «Дополнительная проверка соответствия требованиям DDI», затем нажмите «Далее».

На следующем экране выберите «Выбрать названия драйверов из списка» и нажмите «Далее».

Здесь вы можете выбрать драйверы, которые необходимо протестировать. Если вы не знаете, какой из драйверов работает неисправно, выберите все, кроме Microsoft, потому что они чаще всего работают без ошибок.

Когда вы нажмете «Готово», Windows предложит перезагрузить ПК. После того, как компьютер включится, продолжайте использовать его, как обычно. Если вы получите синий экран, обратите внимание на сообщение об ошибке, и перезагрузите компьютер.
Как только вы узнали неисправный драйвер, вы можете отключить Диспетчер проверки драйверов одним их двух способов. Вы можете заново открыть командную строку, ввести команду verifier, и выбрать «Удалить существующие параметры».

Также вы можете открыть командную строку и ввести:
Verifier /bootmode resetonbootfail

После отключение диспетчера проверки драйверов, перезагрузите компьютер. Если компьютер не включается, тогда используйте один из аварийных выходов, о которых мы говорили в разделе «Предупреждение».
Вывод
Если вы думаете, что один из драйверов работает неисправно, но не можете выяснить какой именно, тогда Диспетчер проверки драйверов будет отличным помощником.
Тем не менее, вам следует быть готовым к тому, что компьютер не сможет включиться после тестирования драйверов, поэтому продумайте запасной выход с аварийной ситуации, например, перейти в безопасный режим или запустить точку восстановления Windows.
У вас когда-нибудь были проблемы с драйверами на компьютере? Как вам удалось найти неисправный драйвер? Расскажите нам в комментариях ниже!
Использование средства проверки драйверов для выявления проблем с драйверами Windows для опытных пользователей
Средство проверки драйверов входит в каждую версию Windows, начиная с Windows 2000. Он используется для обнаружения и устранения многих проблем с драйверами, которые, как известно, приводят к повреждению системы, сбоям или другому непредсказуемому поведению. В этой статье описывается, как использовать средство проверки драйверов для изоляции и устранения неполадок драйвера в системе.
Применимо к: Windows Server 2012 Foundation, Windows Server 2012 Essentials, Windows Server 2012 Standard, Windows Server 2012 Datacenter
Исходный номер базы знаний: 244617
Возможности средства проверки драйверов
Чтобы использовать средства проверки драйверов, запустите Verifier.exe и перезапустите компьютер. Вам не нужно вносить другие изменения, чтобы начать анализ драйверов в системе. Учетной записи пользователя требуются права администратора для запуска Verifier.exe.
Средства проверки драйверов могут проверять множество различных аспектов поведения драйвера. Эти возможности группируются в параметры или параметры, которые включены с помощью флагов. (Параметры терминов, параметры и флаги обычно взаимозаменяемы в документации по средствам проверки драйверов. Они представляют похожие понятия.)
Подробные сведения о каждом флаге см. в разделе «Параметры средства проверки драйвера» и классы правил.
Стандартные параметры
Следующие параметры вместе представляют правила, которые не должны нарушать все драйверы в системе. Эти параметры /standard включены при включении стандартных параметров в графическом пользовательском интерфейсе средства проверки драйверов или при настройке средства проверки драйверов с помощью командной строки.
Автоматические проверки
Эти проверки всегда выполняются для проверяемого драйвера независимо от выбранных параметров.
Примеры автоматических проверок:
- Проверки IRQL
- Созданный IRQL (то есть текущий IRQL меньше целевого IRQL).
- Ниже IRQL (то есть текущий IRQL больше целевого IRQL).
- Двойной выпуск спин-блокировки.
- Приобретения и выпуски спин-блокировки выполняются в соответствующей IRQL.
- Выделение и выделение пула с использованием страниц выполняются в правильной версии IRQL (APC_LEVEL или ниже).
- Выделения и бесплатные пулы без страниц выполняются в правильной версии IRQL (DISPATCH_LEVEL или ниже).
- Для этих программных интерфейсов (API) не указаны случайные (неинициализированные) значения.
- Освобожденные выделения не указывают на активные объекты таймера.
- Проверяет, что драйвер не имеет ожидающих операций во время выгрузки, таких как ожидающие контроллеры домена или рабочие потоки.
- Неправильное переключение стеков потоков.
- Попытка вызова KeWaitXxx в IRQL >= DISPATCH_LEVEL.
- Разыменовывающее объект, у которого уже есть счетчик ссылок 0.
Специальный пул
Если этот параметр активен, средства проверки драйвера выделяют большую часть запросов памяти драйвера из специального пула. Этот специальный пул отслеживается на случай переполнения памяти, нехватки памяти и памяти, доступ к которую выполняется после ее очистки.
Принудительная проверка IRQL
Если этот параметр активен, driver Verifier накладывает крайнюю нехватку памяти на драйвер, недействительный код, допускаемый к просмотру. Если драйвер пытается получить доступ к памяти на странице в неправильном IRQL или при удержании спин-блокировки, то это поведение обнаруживается при проверке драйвера.
Отслеживание пула
Если этот параметр активен, то при выгрузки драйвер проверяет, освобождает ли драйвер все выделения памяти. Он выявляет утечки памяти.
Проверка ввода-вывода
Если этот параметр активен, driver Verifier выделяет IRP драйвера из специального пула и отслеживает обработку ввода-вывода драйвера. Он обнаруживает недопустимое или несогласованное использование процедур ввода-вывода.
Если включена проверка ввода-вывода:
- Все IP-адреса, выделенные через IoAllocateIrp, выделяются из специального пула, если они доступны.
- Проверки выполняются в IoCallDriver, IoCompleteRequest и IoFreeIrp для перехвата сообщений об ошибках драйвера.
- Все ошибки проверки ввода-вывода проверяют с помощью кода DRIVER_VERIFIER_IOMANAGER_VIOLATION (0xC9).
В Windows 7 и более поздних версиях операционной системы Windows все функции расширенной проверки ввода-вывода включены в проверку ввода-вывода и больше не доступны и не требуются для выбора параметра расширенной проверки ввода-вывода в диспетчере проверки драйвера или в командной строке.
Обнаружение взаимоблокировки
Если этот параметр активен, driver Verifier отслеживает использование драйвером спин-блокировок, мьютекса и быстрых мьютексов. Он определяет, может ли код драйвера в определенный момент вызвать взаимоблокировку.
Расширенная проверка ввода-вывода
Если этот параметр активен, средство проверки драйверов отслеживает вызовы нескольких подпрограмм диспетчера операций ввода-вывода и выполняет нагрузочное тестирование ip-адресов PnP, ip-адресов питания и IPI WMI.
В Windows 7 и более поздних версиях все функции расширенной проверки ввода-вывода включены в проверку ввода-вывода. Этот параметр больше не доступен или не требуется в диспетчере средства проверки драйверов или в командной строке.
Проверка DMA
Если этот параметр активен, средства проверки драйвера отслеживают использование драйвером подпрограмм DMA. Он обнаруживает неправильное использование буферов DMA, адаптеров и регистров карт.
Проверки безопасности
Если этот параметр активен, проверяющий драйвер ищет распространенные ошибки, которые могут привести к уязвимостям системы безопасности, например ссылку на адреса в пользовательском режиме подпрограммами режима ядра.
Прочие проверки
Если этот параметр активен, проверяющий драйвер ищет распространенные причины сбоев драйвера, такие как неправильное обработка освобожденной памяти.
Проверка соответствия DDI
Если этот параметр активен, driver Verifier применяет набор правил интерфейса драйвера устройства (DDI), которые проверяют правильность взаимодействия между драйвером и интерфейсом ядра операционной системы.
Параметр проверки соответствия DDI реализуется с помощью библиотеки режима ядра, называемой VerifierExt.sys. Если обнаружено нарушение одного из правил проверки соответствия DDI, VerifierExt.sys будет модуль, который вызывается для проверки системных ошибок.
Дополнительные параметры
Эти параметры предназначены для тестирования конкретного сценария или являются вариантами, которые внедряют сбои или задержки в определенные подпрограммы DDI для имитации экстренных нагрузочных условий.
Требования к средствам проверки драйверов
Единственным требованием является то, что необходимо установить Windows Server 2012. Вы можете включить проверку драйверов как в розничных, так и в проверенных версиях Windows. Если установлена антивирусная программа Norton, не включите обнаружение взаимоблокировок средства проверки драйверов.
Включение средства проверки драйверов
Вы можете включить проверку драйвера с помощью Verifier.exe. Verifier.exe включается в каждую копию Windows. Он автоматически устанавливается в папку System32. Verifier.exe интерфейсы командной строки и графического пользовательского интерфейса (GUI), поэтому можно указать драйверы и соответствующие уровни проверки. Вы также можете просмотреть статистику по проверке драйверов в режиме реального времени. Дополнительные сведения см. в разделе «Диспетчер проверки Verifier.exe драйверов «.
Отладка нарушений средства проверки драйвера
Если проверятель драйвера обнаруживает нарушение, стандартное поведение — проверка системы на наличие максимально возможной информации об отладке проблемы. Система, подключенная к отладчику, будет остановлена после проверки ошибок.
Все нарушения средства проверки драйверов приводит к проверкам ошибок, но наиболее распространенными (хотя не обязательно все) являются:
- 0xC1: SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION
- 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION
- 0xC6: DRIVER_CAUGHT_MODIFYING_FREED_POOL
- 0xC9: DRIVER_VERIFIER_IOMANAGER_VIOLATION
- 0xD6: DRIVER_PAGE_FAULT_BEYOND_END_OF_ALLOCATION
- 0xE6: DRIVER_VERIFIER_DMA_VIOLATION
!analyze -v — это лучшая команда, используемая при запуске нового сеанса отладки. Эта команда вернет полезную информацию и попытается определить неисправный драйвер.
Расширения отладчика, относящиеся к средству проверки драйверов:
- !verifier создает дамп записанной статистики средства проверки драйвера. !verifier -? отобразит все доступные параметры.
- !deadlock создает дамп данных, связанных с блокировками или объектами, отслеживаемыми обнаружением взаимоблокировок. !deadlock -? отобразит все доступные параметры.
- !iovirp [address] создает дамп сведений, связанных с IRP, отслеживаемым с помощью средства проверки ввода-вывода.
- !ruleinfo [RuleID] создает дамп сведений, связанных с нарушенным правилом проверки соответствия DDI (RuleID всегда является первым аргументом для проверки ошибок, все идентификаторы правил проверки соответствия DDI имеют форму 0x200nn).
Средства проверки драйверов и графические драйверы
Графические драйверы в режиме ядра Windows, такие как библиотеки DLL принтера и драйвера дисплея, не могут вызывать точку входа пула напрямую. Выделение пула выполняется косвенно с помощью обратных вызовов интерфейса драйвера графического устройства (DDI) для Win32k.sys. Например, EngAllocMem — это обратный вызов, который графический драйвер вызывает для явного выделения памяти пула. Другие специализированные обратные вызовы, такие как EngCreatePalette и EngCreateBitmap, также возвращают память пула.
Чтобы обеспечить такое же автоматическое тестирование для графических драйверов, поддержка некоторых функций средства проверки драйверов включена в Win32k.sys. Так как графические драйверы более ограничены, чем другие драйверы в режиме ядра, им требуется только подмножество функций средства проверки драйверов. В частности, проверка IRQL и проверка ввода-вывода не требуются. Другие функциональные возможности, а также использование специального пула, случайный сбой выделения пула и отслеживание пула, поддерживаются в разной степени в разных графических обратных вызовах DDI.
Случайные сбои поддерживаются для следующих графических функций обратного вызова DDI:
- EngAllocMem
- EngAllocUserMem
- EngCreateBitmap
- EngCreateDeviceSurface
- EngCreateDeviceBitmap
- EngCreatePalette
- EngCreateClip
- EngCreatePath
- EngCreateWnd
- EngCreateDriverObj
- BRUSHOBJ_pvAllocRbrush
- CLIPOBJ_ppoGetPath
Кроме того, для EngAllocMem поддерживается отслеживание специальных пулов и пулов.
Включение средства проверки драйверов для графических драйверов идентично включению других драйверов. Дополнительные сведения см. в разделе «Включение средства проверки драйвера «. Неподдерживаемые флаги, такие как проверка IRQL, игнорируются. Кроме того, можно использовать !gdikdx.verifier команду kernel-debugger для проверки текущего состояния средства проверки драйверов и трассировки пула для графических драйверов.
Для проверки надежности следует использовать только параметр случайного сбоя выделения. Использование этого параметра может привести к отрисовке сообщений об ошибках, поэтому не следует использовать этот параметр с проверочного теста для проверки правильности реализации графического драйвера (например, путем сравнения выходных данных графического драйвера с эталонным изображением).
Диспетчер проверки драйверов (Verifier.exe)
Средство диспетчера проверяемых драйверов (Verifier.exe) является предпочтительным способом создания и изменения параметров средства проверки драйверов и сбора статистики из средства проверки драйверов. Verifier.exe находится в папке %WinDir%\System32 для каждой установки Windows.
Диспетчер проверяемых драйверов — это графический пользовательский интерфейс, включенный в Windows для настройки средства проверки драйверов. Запустите диспетчер проверки драйверов, используя verifier.exe без других параметров командной строки. При включении коммутаторов используется версия служебной программы на основе командной строки.
Чтобы получить справку по настройке средства проверки драйверов, verifier.exe /? запустите его в окне CMD администратора.
Состояние драйвера
На странице свойств «Состояние драйвера» отображается текущее состояние средства проверки драйвера. Вы можете увидеть, какие драйверы обнаруживает проверяемая. Состояние может быть одним из следующих значений:
- Загружено: драйвер в настоящее время загружен и проверен.
- Выгружено: драйвер в настоящее время не загружен, но был загружен по крайней мере один раз с момента перезапуска компьютера.
- Никогда не загружалось: драйвер никогда не загружается. Это состояние может указывать на то, что файл образа драйвера поврежден или вы указали имя драйвера, отсутствующее в системе.
Выберите заголовок списка, чтобы отсортировать список по именам или состояниям драйверов. В правом верхнем углу диалогового окна можно просмотреть текущие типы проверки, которые применяются. Состояние драйверов обновляется автоматически, если вы не переключитесь в режим обновления вручную. Частоту обновления можно изменить с помощью переключателей в левой нижней части диалогового окна. Чтобы принудительно обновить состояние, выберите «Обновить сейчас».
Если включить флаг «Специальный пул» и менее 95 процентов выделенного пула было отправлено в специальный пул, на этой странице появится предупреждающее сообщение. Это означает, что необходимо выбрать меньший набор драйверов для проверки или добавить на компьютер дополнительный объем физической памяти, чтобы получить более полное покрытие проверки выделения пула.
Глобальные счетчики
На этой странице свойств показано текущее значение некоторых счетчиков, поддерживаемых средствами проверки драйверов. Нулевое значение счетчика может указывать на то, что связанный флаг проверки драйвера не включен. Например, значение 0 для счетчика «Другие/сбои» указывает, что флаг имитации низкого ресурса не включен. Вы можете отслеживать действия средства проверки, так как значения счетчиков обновляются автоматически по умолчанию. Вы можете изменить частоту обновления, переключиться на обновление вручную или принудительно выполнить обновление с помощью группы элементов управления в левой нижней части диалогового окна.
Отслеживание пула
На этой странице свойств отображается больше статистики, собранной из средства проверки драйверов. Все счетчики, показанные на этой странице, связаны с флагом отслеживания пула проверяемого объекта. Большинство из них являются счетчиками для каждого драйвера, например текущими выделениями, текущими выделенными байтами и т. д. Чтобы просмотреть счетчики для конкретного драйвера, необходимо выбрать имя драйвера в верхней комбинации.
Параметры
Эту страницу можно использовать для создания и изменения параметров средства проверки драйверов. Параметры сохраняются в реестре, и необходимо перезапустить компьютер, чтобы параметры вступает в силу. Список можно использовать для просмотра установленных в настоящее время драйверов. Каждый драйвер может быть в одном из следующих состояний:
- Проверка включена: драйвер в настоящее время проверен.
- Проверка отключена: драйвер в настоящее время не проверен.
- Проверка включена (требуется перезагрузка): драйвер проверяется только после следующего перезапуска.
- Проверка отключена (требуется перезагрузка): драйвер в настоящее время проверен, но не проверен после следующего перезапуска.
Вы можете выбрать один или несколько драйверов из списка и переключить состояние с помощью двух кнопок в списке. Вы также можете щелкнуть правой кнопкой мыши имя драйвера, чтобы отобразить контекстное меню, которое позволяет выполнять переключение состояния.
В нижней части диалогового окна можно указать дополнительные драйверы (разделенные пробелами), которые необходимо проверить после следующего перезапуска. Обычно этот элемент управления редактированием используется, если требуется установить еще не загруженный драйвер.
Если группа переключателей в верхней части списка имеет значение «Проверить все драйверы «, список, кнопки «Проверить» и «Не проверять» и элемент управления «Изменить» недоступны. Это означает, что после следующего перезапуска проверяются все драйверы в системе.
Тип проверки можно задать с помощью флажков в правом верхнем углу диалогового окна. Вы можете включить проверку ввода-вывода на уровне 1 или 2. Проверка уровня 2 надежнее, чем уровень 1.
Сохраните изменения параметров, выбрав «Применить «. На этой странице есть еще две кнопки:
- Предпочтительные параметры: он выбирает некоторые часто используемые параметры (со всеми проверенными драйверами).
- Сброс всех: очищает все параметры средства проверки драйверов, чтобы драйверы не проверялись.
После выбора » Применить» необходимо перезапустить компьютер, чтобы изменения вступили в силу.
Переменные параметры
Эту страницу свойств можно использовать для немедленного изменения флагов средства проверки драйвера. Можно переключать только состояние некоторых флагов средства проверки драйверов. Вы не можете изменить список проверяемых драйверов. После изменения состояния некоторых флажков выберите «Применить «, чтобы изменения вступили в силу. Изменения вступает в силу немедленно. Они будут выполняться до тех пор, пока вы не внесите дополнительные изменения или пока не перезапустите компьютер.
Интерфейс командной строки
Вы также можете Verifier.exe из командной строки (для получения дополнительных сведений введитеverifier.exe /? в командной строке). В командной строке можно использовать несколько коммутаторов, например:
Verifier.exe /flags 0x209BB /driver MyDriver1.sys MyFilterDriver1.sysВ следующем списке показаны наиболее часто используемые флаги командной строки:
Настройка параметров (флагов)
- verifier.exe / flagsЗначение — это шестнадцатеричное число (требуется префикс 0x ), представляющий общее значение флагов для включения. Значение каждого флага отображается в выходных данных verifier /? . Стандартные флаги: 0x00000000: автоматические проверки
0x00000001: специальный пул
0x00000002: принудительная проверка IRQL
0x00000008: отслеживание пула
0x00000010: проверка ввода-вывода
0x00000020: обнаружение взаимоблокировки
0x00000080: проверка DMA
0x00000100: проверки безопасности
0x00000800: прочие проверки
0x00020000: проверка соответствия DDI Дополнительные флаги: 0x00000004: моделирование случайного низкого уровня ресурсов
0x00000040: расширенная проверка ввода-вывода (только Vista)
0x00000200: принудительное выполнение ожидающих запросов ввода-вывода
0x00000400: ведение журнала IRP
0x00002000: инвариантная проверка MDL для стека
0x00004000: инвариантная проверка MDL для driver0x00008000: нечеткость задержки Power Framework Например, чтобы включить только специальные проверки пула, проверки ввода-вывода и прочие проверки:
verifier.exe /flags 0x811Чтобы включить все стандартные параметры (любой из примеров работает):
verifier.exe /standardverifier.exe /flags 0x209BBverifier.exe /driver driver1.sys [driver2.sys driver3.sys . ]Эта команда указывает конкретный драйвер или драйверы для проверки. Укажите дополнительные драйверы в списке с разделителями пробелами.
verifier.exe /allverifier.exe /volatile /flags *value /adddriver MyDriver1.sys*verifier /queryverifier /querysettingsverifier.exe /resetДополнительные сведения для разработчиков драйверов
В следующих разделах описываются дополнительные сведения о параметрах средства проверки драйверов, которые могут быть интересны разработчикам драйверов. Эти параметры обычно не требуются ИТ-специалистам.
В этот раздел, описание метода или задачи включены действия, содержащие указания по изменению параметров реестра. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует в точности выполнять приведенные инструкции. Для дополнительной защиты создайте резервную копию реестра, прежде чем редактировать его. Так вы сможете восстановить реестр, если возникнет проблема. Для получения дополнительной информации о том, как создать резервную копию и восстановить реестр, см. статью Сведения о резервном копировании и восстановлении реестра Windows.
Чтобы включить проверку драйверов путем изменения реестра, выполните следующие действия.
- Запустите редактор реестра (Regedt32).
- Откройте следующий раздел реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\VerifyDrivers
- Измените REG_SZ ключ.
Задайте REG_SZ ключ для имен драйверов, которые необходимо протестировать без учета регистра. Можно указать несколько драйверов, но использовать только один драйвер. Таким образом вы можете убедиться, что доступные системные ресурсы не исчерпаны раньше времени. Преждевременная нехватка ресурсов не вызывает проблем с надежностью системы, но может привести к обходу некоторых проверок драйверов.
В следующем списке показаны примеры значений ключа REG_SZ :
- Ntfs.sys
- Win32k.sys ftdisk.sys
- *.sys
Уровень проверки драйвера можно указать в следующем разделе реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\VerifyDriverLevel
Значение ключа — это DWORD, представляющий коллекцию всех включенных флагов.