VERIFIER – стандартное средство тестирования драйверов Windows.



Диспетчер проверки драйверов verifier.exe является стандартным средством тестирования драйверов Windows, начиная с Windows XP. Обладает обширными возможностями и используется, как правило, профессиональными разработчиками или тестировщиками программного обеспечения. Для эффективного использование утилиты требуются знания принципов работы операционной системы (ОС) и драйверов, а некорректное ее использование может привести к краху системы. Очевидно, именно по этой причине команда VERIFIER не получила широкого распространения и большинство обычных пользователей Windows не имеют о ней ни малейшего понятия.

Для использования диспетчера проверки драйверов VERIFIER необходимо иметь права Администратора на тестируемом компьютере. Документация от Microsoft рекомендует запускать эту программу только на компьютерах, используемых для тестирования и отладки.

Перед использованием команды VERIFIER настоятельно рекомендуется подготовить средства восстановления работоспособности системы для тех случаев, когда ее загрузка невозможна. Не лишним будет создание точки восстановления и обеспечение загрузки последней удачной конфигурации (Last known good menu). А для того, чтобы минимизировать риски приведения системы в некондиционное состояние, внимательно изучите параметры командной строки, обеспечивающие безопасный режим загрузки средств тестирования (bootmode). Не используйте режим загрузки по умолчанию (persistent, при котором настройки средства проверки драйверов сохраняются при перезагрузках).

Формат командной строки:

verifier {/? | /help}

verifier /standard /all

verifier /standard /driver < name > [< name > ...]

verifier {/ruleclasses | /rc} < options > [< ruleclass_1 > < ruleclass_2 > ...] /all

verifier /flags < options > [< options > ...] /all

verifier /flags < options > [< options > ...] /driver < name > [< name > ...]

verifier /rules {query | reset | default < id > | disable < id >}

verifier /query

verifier /querysettings

verifier /bootmode {persistent | resetonbootfail | oneboot | resetonunusualshutdown}

verifier /persistthroughupgrade

verifier /reset

verifier /faults [probability [pool_tags [applications [delay_minutes]]]]

verifier /faultssystematic [< options > ...]

verifier /log < file_name > [/interval < seconds >]

verifier /volatile /flags < options > [ ...]

verifier /volatile /adddriver < name > [< name > ...]

verifier /volatile /removedriver < name > [< name > ...]

verifier /volatile /faults [probability [pool_tags [applications [delay_minutes]]]]

verifier /domain {wdm | ndis | ks | audio} [rules.all | rules.default ] /driver ... [/logging | /livedump]

verifier /logging

verifier /livedump

Параметры командной строки:

/? или /help - Отображается данное справочное сообщение.

/standard - Означает стандартные флаги средства проверки драйверов.

/all - Означает, что все установленные драйверы будут проверены при следующей загрузке.

/driver < name > [< name > ...] - Означает один или несколько драйверов (имена образов), которые будут проверены. Подстановочные знаки (например, n*.sys) не поддерживаются.

/driver.exclude < name > [< name > ...] - Означает один или несколько драйверов (имена образов), которые будут исключены из проверки. Этот параметр применяется, только когда для проверки выбраны все драйверы. Подстановочные знаки (например, n*.sys) не поддерживаются.

/flags < options > [< options > ...] - Означает один или несколько параметров, которые должны быть включены для проверки. Флаги применяются ко всем драйверам, проверяемым с помощью средства проверки драйверов. Значения этих параметров должны быть указаны в десятичном, шестнадцатеричном (префикс "0x"), восьмеричном (префикс "0o") или двоичном (префикс "0b") виде. Стандартные флаги:
    0x00000001 (бит 0) - особый пул

    0x00000002 (бит 1) - принудительная проверка IRQL

    0x00000008 (бит 3) - отслеживание пула

    0x00000010 (бит 4) - проверка операций ввода-вывода

    0x00000020 (бит 5) - выявление взаимоблокировки

    0x00000080 (бит 7) - проверка прямого доступа к памяти (DMA)

    0x00000100 (бит 8) - проверки безопасности

    0x00000800 (бит 11) - прочие проверки

    0x00020000 (бит 17) - проверка соответствия требованиям DDI

Дополнительные флаги:

Эти флаги предназначены для проверки конкретных сценариев. Флаги с отметкой (*) требуют проверки операций ввода-вывода (бит 4), которая будет включена автоматически. Флаги с отметкой (**) допускают отключение отдельных правил.

    0x00000004 (бит 2) - эмуляция случайной нехватки ресурсов

    0x00000200 (бит 9) - принудительная обработка отложенных запросов ввода-вывода (*)

    0x00000400 (бит 10) - ведение журнала IRP (*)

    0x00002000 (бит 13) - инвариантная проверка MDL для стека (*)

    0x00004000 (бит 14) - инвариантная проверка MDL для драйвера (*)

    0x00008000 (бит 15) - нечеткое тестирование задержки инфраструктуры питания

    0x00010000 (бит 16) - проверка интерфейса порта/минипорта

    0x00040000 (бит 18) - эмуляция систематичной нехватки ресурсов

    0x00080000 (бит 19) - проверка соответствия требованиям DDI (дополнительно)

    0x00200000 (бит 21) - проверка NDIS/WIFI (**)

    0x00800000 (бит 23) - нечеткое тестирование задержки синхронизации ядра

    0x01000000 (бит 24) - проверка коммутатора виртуальной машины

    0x02000000 (бит 25) - проверки целостности кода

/ruleclasses or /rc [< ruleclass_1 > < ruleclass_2 > ... < ruleclass_k >] - Этот параметр представляет расширенный вариант описанного выше параметра "/flags", имеющего ограниченную битовую карту в 32 бита. Данный параметр может включать более 32-х классов проверки. Каждое положительное десятичное целое означает класс проверки. В случае нескольких классов идентификаторы классов можно разделять пробелами. Ниже указаны доступные идентификаторы классов правил. Нули в начале идентификаторов могут быть опущены. Стандартные классы правил:

    1 - особый пул

    2 - принудительная проверка IRQL

    4 - отслеживание пула

    5 - проверка операций ввода-вывода

    6 - выявление взаимоблокировки

    8 - проверка прямого доступа к памяти (DMA)

    9 - проверки безопасности

    12 - прочие проверки

    18 - проверка соответствия требованиям DDI

    34 - проверка Windows Driver Foundation

Дополнительные классы правил:

Эти классы правил предназначены для проверки конкретных сценариев. Классы правил с отметкой (*) требуют проверки операций ввода-вывода (5), которая будет включена автоматически. Флаги с отметкой (**) допускают отключение отдельных правил.

    3 - эмуляция случайной нехватки ресурсов

    10 - принудительная обработка отложенных запросов ввода-вывода (*)

    11 - ведение журнала IRP (*)

    14 - инвариантная проверка MDL для стека (*)

    15 - инвариантная проверка MDL для драйвера (*)

    16 - нечеткое тестирование задержки инфраструктуры питания

    17 - проверка интерфейса порта/минипорта

    19 - эмуляция систематичной нехватки ресурсов

    20 - проверка соответствия требованиям DDI (дополнительно)

    22 - проверка NDIS/WIFI (**)

    24 - нечеткое тестирование задержки синхронизации ядра

    25 - проверка коммутатора виртуальной машины

    26 - проверки целостности кода

/log.code_integrity - Этот параметр подавляет прерывания нарушения целостности кода и собирает только статистику для проверенных драйверов. Статистика извлекается через параметр /log или отладчик ядра. Этот параметр применяется только в случае, если включена проверка целостности ядра.

/rules {query | reset | default < id > | disable < id >} - Означает элемент управления уровнем правил (дополнительно).
    query - Отображается текущее состояние управляемых правил.
    reset - Восстанавливается состояние по умолчанию для всех правил.
    default < id > - Восстанавливается состояние по умолчанию для идентификатора правила.
    disable < id > - Отключается идентификатор конкретного правила.

/query - Отображается статистика и настройки среды выполнения для средства проверки драйверов.

/querysettings - Отображается сводная информация о параметрах и драйверах, которые в настоящий момент включены или которые будут проверены после следующей загрузки. Не отображаются драйверы и параметры, добавленные с помощью параметра /volatile.

/bootmode - Означает режим загрузки средства проверки драйверов. Для применения этого параметра требуется перезагрузить систему.

    persistent - Настройки средства проверки драйверов сохраняются при перезагрузках. Это значение используется по умолчанию.
    resetonbootfail - Средство проверки драйверов отключается при последующих перезагрузках, если система не запускается. Желательно применять данный параметр во избежание краха системы.
    resetonunusualshutdown - Средство проверки драйверов продолжает работать, пока не произойдет необычное завершение работы. Можно использовать аббревиатуру "rous". Желательно применять данный параметр во избежание краха системы.

    oneboot - Средство проверки драйверов включается только при следующей загрузке. Желательно применять данный параметр во избежание краха системы.

/persistthroughupgrade - Настройки средства проверки драйверов сохраняются при обновлении. Средство проверки драйверов остается активным во время обновления системы.

/reset - Удаляются флаги средства проверки драйверов и настройки драйвера. Для применения этого параметра требуется перезагрузить систему.

/faults [вероятность [теги_пула [приложения [задержка_минуты]]]] - Использование функции имитации случайной нехватки ресурсов и дополнительная настройка параметров для такой имитации.
    "Вероятность" - Вероятность сбоя конкретной операции выделения ресурсов со стороны средства проверки драйвера. Значение представляет собой число случаев из 10 000, когда средство проверки вызывает сбой выделения ресурсов. Значение по умолчанию: 600, что означает 600/10 000 или 6 .
    "Теги пула" - Список разделенных пробелами тегов пула, для которых следует инициировать сбой. По умолчанию сбой можно инициировать для любого случая выделения ресурсов пула.
    "Приложения" - Список разделенных пробелами имен файлов изображений (исполняемых), для которых будет инициирован сбой. По умолчанию сбой можно инициировать для любого случая выделения ресурсов пула.
    DelayMinutes - Время (в минутах) после загрузки, в течение которого средство проверки драйвера не выполняет намеренные сбои операций выделения ресурсов. Эта задержка позволяет дождаться загрузки драйверов и стабилизации системы перед началом проверки. Значение по умолчанию: 8 минут.

/faultssystematic [<параметры> ...] - Настройка параметров имитации систематической нехватки ресурсов.

    enableboottime - Включение функции инициирования сбоев при перезагрузках.
    disableboottime - Выключение функции инициирования сбоев при перезагрузках. Это значение по умолчанию.
    recordboottime - Включение функции инициирования сбоев в режиме "что, если" при перезагрузках.
    resetboottime - Выключение функции инициирования сбоев при перезагрузках и очищение списка исключений стеков.
    enableruntime - Динамическое включение функции инициирования сбоев.
    disableruntime - Динамическое выключение функции инициирования сбоев.
    recordruntime - Динамическое включение функции инициирования сбоев в режиме "что, если".
    resetruntime - Динамическое выключение функции инициирования сбоев и очищение списка стеков, для которых ранее был выполнен сбой.
    querystatistics - Текущая статистика инициирования сбоев.
    incrementcounter - Увеличение значения счетчика тестового прохода, используемого для определения времени инициирования сбоя.
    getstackid < счетчик > - Получение идентификатора обозначенного стека, для которого был инициирован сбой.
    excludestack < ид_стека > - Исключение стека из плана инициирования сбоев.

/log <имя_файла> [/interval < секунды >] - Создание файла журнала с определенным именем и регулярное записывание статистики среды выполнения в этот файл. Интервал между обновлениями файла журнала контролируется с помощью параметра /interval. Значение по умолчанию: 30 секунд. Чтобы закрыть журнал и вернуться к предыдущему элементу, используйте сочетание клавиш CONTROL+C.

/volatile - Изменение параметров средства проверки драйвера без перезагрузки компьютера. Временные параметры вступают в силу незамедлительно и действуют до следующей перезагрузки системы.

/volatile /adddriver <имя> [<имя> ...] - Запуск проверки указанного драйвера или драйверов.

/volatile /removedriver <имя> [<имя> ...] - Остановка проверки указанного драйвера или драйверов.

/domain {wdm | ndis | ks | audio} [rules.all | rules.default] /driver ... [/logging | /livedump] - Настройка параметров расширения средства проверки. Поддерживаются следующие типы расширения средства проверки.
    wdm - Включенное расширение средства проверки для драйверов WDM.
    ndis - Включенное расширение средства проверки для сетевых драйверов.
    ks - Включенное расширение средства проверки для драйверов потоковой передачи в режиме ядра.
    audio - Включенное расширение средства проверки для аудиодрайверов. Поддерживаются следующие параметры для расширений:
    rules.default - Включение заданных по умолчанию правил проверки для выбранного расширения средства проверки.
    rules.all - Включение всех правил проверки для выбранного расширения средства проверки.

/logging - Включение функции ведения журнала нарушений правил, обнаруженных выбранными расширениями средства проверки.

/livedump - Включение функции сбора данных о динамических дампах памяти для случаев нарушения правил, обнаруженных выбранными расширениями средства проверки.


Примеры использования команды VERIFIER



verifier /querysettings - отобразить текущие параметры тестирования.

verifier /query - отобразить текущее состояние тестирования драйверов

verifier /standard /driver disk.sys - использовать стандартные параметры для тестирования драйвера disk.sys Пример отображаемых результатов выполнения команды:

Флаги средства проверки: 0x001209bb
Стандартные флаги:
[X] 0x00000001 Особый пул.
[X] 0x00000002 Принудительная проверка IRQL.
[X] 0x00000008 Слежение за пулом.
[X] 0x00000010 Проверка операций ввода-вывода.
[X] 0x00000020 Выявление взаимоблокировки.
[X] 0x00000080 Проверка прямого доступа к памяти.
[X] 0x00000100 Проверки безопасности.
[X] 0x00000800 Прочие проверки.
[X] 0x00020000 Проверка соответствия требованиям DDI.

Дополнительные флаги:

[ ] 0x00000004 Имитация случайной нехватки ресурсов.
[ ] 0x00000200 Принудительная приостановка запросов операций ввода-вывода.
[ ] 0x00000400 Ведение журнала IRP.
[ ] 0x00002000 Инвариантная проверка MDL для стека.
[ ] 0x00004000 Инвариантная проверка MDL для драйвера.
[ ] 0x00008000 Нечеткое тестирование задержки инфраструктуры питания.
[ ] 0x00010000 Проверка интерфейса порта/минипорта.
[ ] 0x00040000 Имитация систематичной нехватки ресурсов.
[ ] 0x00080000 Проверка соответствия требованиям DDI (дополнительная).
[ ] 0x00200000 Проверка NDIS/WIFI.
[ ] 0x00800000 Нечеткое тестирование задержки синхронизации ядра.
[ ] 0x01000000 Проверка параметра виртуальной машины.
[ ] 0x02000000 Проверки целостности кода.

Внутренние флаги:

[X] 000100000: флаги расширенного средства проверки (внутренние).
[X] Указывает, что флаг включен.

Режим загрузки:

Persistent

Правила:

Для всех правил используются параметры по умолчанию
Расширения:

wdm: rules.default

Проверенные драйверы:

disk.sys

Чтобы изменения вступили в силу, необходимо перезагрузить систему.

При тестировании драйверов действуют те параметры, которые применялись при загрузке Windows. Измененные параметры будут применены при следующей загрузке.

Для того, чтобы параметры тестирования были использованы только 1 раз при следующей перезагрузке, используйте команду:

verifier /standard /driver disk.sys /bootmode oneboot

Для того, чтобы отменить тестирование при последующих перезагрузках, если Windows не загружается, используйте команду:

verifier /standard /driver disk.sys /bootmode resetonbootfail

Для того, чтобы отключить тестирование после необычного завершения системы ( например, сброс или отключение питания при зависании Windows), используйте команду:

verifier /standard /driver disk.sys /bootmode resetonunusualshutdown

Или в сокращенном варианте:

verifier /standard /driver disk.sys /bootmode rous

Для того, чтобы выполнить стандартную проверку всех драйверов, исключая драйвер disk.sys используйте команду:

verifier /standard /all /driver.exclude disk.sys /bootmode rous

Результаты тестирования можно выводить в текстовый файл:

verifier /standard /all /driver.exclude disk.sys /bootmode rous /log C:\Windows\Logs\Verifier.txt /interval 10 - то же, что и в предыдущем примере, но состояние тестирования каждые 10 секунд будет записываться в файл. Если параметр /interval не задан, то запись в журнал будет выполняться 1 раз в 30 секунд. Для прекращения записи в журнал используется комбинация клавиш CONTROL+C.

Для сброса параметров тестирования в исходное состояние (нет тестирования) используется команда:

verifier /reset

Тестирование будет прекращено при перезагрузке Windows.

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

Графический интерфейс пользователя при запуске verifier.exe без параметров командной строки.


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

Выбор драйверов для тестирования.


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

Работа в командной строке с параметрами, заданными в графическом интерфейсе.


При использовании утилиты verifier.exe нужно учитывать, что режим тестирования требует значительных ресурсов системы, и не стоит задавать даже стандартное тестирование для всех драйверов, установленных в системе, загрузка в этом случае может длиться часами.





Весь список команд CMD Windows     |    На главную страницу



Рейтинг@Mail.ru