Средство проверки драйверов: новые возможности

Средство проверки драйверов доступно во всех версиях Windows, начиная с Windows 2000. Каждая версия содержит новые функции и проверяет наличие ошибок в драйверах Windows. В этом разделе приводится сводка изменений и приводятся ссылки на соответствующую документацию.

Средство проверки драйверов в Windows 11 (обновлено: 30 сентября 2021 г.)

Начиная с Windows 11, многие флаги теперь включены без перезагрузки с использованием синтаксиса команд, отличного от синтаксиса переменных. Дополнительные сведения о новом синтаксисе см. в разделе Синтаксис команд средства проверки драйверов .

Средство проверки драйверов в Windows 10 (обновлено: 8 мая 2018 г.)

Важно!

Сведения о включении проверки WDF в Windows 10 версии 1803 или более поздних выпусках см. в разделе Использование средства проверки KMDF.

  • Вы по-прежнему можете включить проверку WDF как часть флагов средства проверки /standard драйверов. Дополнительные сведения см. в разделе Синтаксис команд средства проверки драйверов .
  • Это изменение повлияет на вас, если вы включаете DV с синтаксисом /flags 0x209BB , так как проверка WDF больше не будет включена автоматически.

Начиная с Windows 10 средство проверки драйверов включает новые правила проверки драйверов для следующих технологий:

Средство проверки драйверов в Windows 8-1 (обновлено: 17 июня 2013 г.)

Начиная с Windows 8.1, средство проверки драйверов предоставляет четыре новых варианта обнаружения ошибок.

Средство проверки драйверов в Windows 8 (обновлено: 20 октября 2012 г.)

Начиная с Windows 8, средство проверки драйверов предоставляет пять новых параметров для обнаружения ошибок.

При сборке, развертывании и тестировании драйвера с помощью Visual Studio 2012 и WDK для Windows 8 можно также настроить проверку драйверов для запуска на тестовом компьютере при развертывании драйвера для тестирования.

Средство проверки драйверов в Windows 7 (обновлено: 22 октября 2012 г.)

В Windows 7 средство проверки драйверов было дополнено новыми тестами и функциями, которые позволяют средству проверки драйверов предоставлять больше классов типичных ошибок драйвера.

  • Неправильные ссылки на пользовательские дескрипторы из драйверов ядра
  • Улучшения проверки ввода-вывода
  • Улучшения специального пула, отслеживания пулов и моделирования нехватки ресурсов
  • Неправильное использование механизмов синхронизации
  • Неправильные ссылки на объекты
  • Затраты на квоту пула из подпрограммы DPC
  • Блоки или задержки завершения работы системы
  • Улучшено принудительное ожидание запросов ввода-вывода

В Windows 7 средство проверки драйверов предоставляет проверки на наличие очередных спин-блокировок. Эти проверки похожи на проверки, предоставляемые для спин-блокировок в более ранних версиях Windows. К таким проверкам относятся следующие:

  • Проверка того, что операция, которая должна вызывать значение уровня запроса прерывания (IRQL), например KeAcquireInStackQueuedSpinLock, фактически не снижает значение IRQL.

  • Проверка того, что операция, которая должна понизить значение IRQL, например KeReleaseInStackQueuedSpinLock, фактически не вызывает значение IRQL.

  • Обрезка рабочего набора системного процесса, если включен параметр Принудительно проверять IRQL , когда irQL вызывается до DISPATCH_LEVEL или выше, в попытке предоставить возможные ссылки на страничные памяти, пока драйвер работает на irQL с повышенными привилегиями.

  • Прогнозирование возможных взаимоблокировок при включении параметра Обнаружение взаимоблокировок.

  • Попытка использовать одну и ту же KSPIN_LOCK структуру данных как в качестве спин-блокировки, так и в качестве очереди спиновой блокировки стека, если включен параметр Обнаружение взаимоблокировки.

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

  • Регистрация переходов IRQL в журнале IRQL средства проверки драйверов. Эти сведения отображаются при использовании расширения !verifier 8 отладчиков Windows. См . раздел !verifier.

Дополнительные сведения об отладке

В Windows 7 средство проверки драйверов предоставляет следующие дополнительные сведения, полезные для отладки:

Существует журнал со трассировками стека в хронологическом порядке для недавних вызовов KeEnterCriticalRegion и KeLeaveCriticalRegion из проверенных драйверов. Содержимое журнала отображается с помощью расширения отладчика !verifier 0x200 отладчика Windows. Эти сведения могут быть полезны для понимания сценариев, в которых поток неожиданно выполняется в критическом регионе или пытается выйти из критического региона, который он уже оставил.

Вы можете отобразить дополнительные сведения из журнала запросов принудительного ожидания ввода-вывода с помощью расширения отладчика !verifier 0x40 . В более ранних версиях Windows журнал содержал только одну трассировку стека для каждой IRP, которую проверяющий драйвер принудительно ожидает. Это была трассировка стека с момента первого вызова IoCompleteRequest для принудительного ожидающего IRP. Windows 7 содержит по крайней мере две записи журнала( возможно, более двух) для каждой принудительной ожидающей IRP:

  • Трассировка стека в момент, когда средство проверки драйверов выбрало принудительное ожидание IRP. Средство проверки драйверов выбирает некоторые из поставщиков irp для принудительного ожидания, когда один из проверенных драйверов вызывает IoCallDriver.
  • Трассировка стека для каждого вызова IoCompleteRequest для принудительного ожидающего IRP до завершения достигает проверенного драйвера. Для одного IRP может существовать несколько вызовов IoCompleteRequest , так как один из драйверов может временно остановить завершение из процедуры завершения, а затем возобновить его, вызвав IoCompleteRequest еще раз.

В журнале перехода IRQL есть более допустимые трассировки стека. Этот журнал отображается с помощью !verifier 8. В версиях Windows, предшествующих Windows 7, средство проверки драйверов могло бы пытаться регистрировать некоторые из этих трассировок стека с повышенными привилегиями IRQL и не удалось записать трассировку стека из-за высокого значения IRQL. В Windows 7 средство проверки драйверов пытается записать следующие трассировки стека:

  • Перед вызовом IRQL, например, когда проверенный драйвер вызывает KeAcquireSpinLock.
  • После понижения IRQL, когда проверенный драйвер вызывает KeReleaseSpinLock.

Таким образом, средство проверки драйверов может записывать больше этих трассировок стека перехода IRQL.

!analyze может рассматривать проблемы, предоставляемые проверками расширенного средства проверки ввода-вывода (которые являются частью средства проверки ввода-вывода в Windows 7). В более ранних версиях Windows отчеты об ошибках расширенного средства проверки ввода-вывода состояли из отображения описания дефекта драйвера, обнаруженного проверяющим драйвером, с последующим прерыванием работы отладчика. Выполнение !analyze после такого перерыва не приводит к значимому рассмотрению для многих из этих разрывов, так как !analyze не может использовать сведения из текста описания ошибки, который отображается в отладчике. В Windows 7 значимые сведения об этих дефектах драйверов сохраняются проверятелем драйверов в памяти. !analyze может найти эти сведения и выполнить гораздо более осмысленное автоматическое рассмотрение для многих из этих перерывов.

Средство проверки драйверов в Windows Vista (обновлено: 9 февраля 2009 г.)

Для Windows Vista средство проверки драйверов было дополнено новыми тестами и функциями.

  • Включение средства проверки драйверов и изменение параметров без перезагрузки
  • Расширенное моделирование низких ресурсов
  • Принудительное выполнение ожидающих запросов ввода-вывода
  • Проверки безопасности
  • Более тщательная проверка ввода-вывода
  • Расширенная проверка IRQL
  • Прочие проверки
  • Отслеживание страниц в заблокированной памяти
  • Дополнительные автоматические проверки

Средство проверки драйверов в Windows XP (обновлено: 4 декабря 2001 г.)

Средство проверки драйверов — это средство для мониторинга драйверов в режиме ядра Windows и графических драйверов. Корпорация Майкрософт настоятельно рекомендует производителям оборудования тестировать свои драйверы с помощью средства проверки драйверов, чтобы убедиться, что драйверы не выполняют незаконные вызовы функций или не вызывают повреждения системы. Средство проверки драйверов дополнено новыми тестами и функциями для Microsoft Windows XP.

Драйверы, отправляемые в WHQL для тестирования, должны пройти проверку драйверов. Новые функции средства проверки драйверов в Windows XP включают:

  • Диспетчер проверки драйверов — новый графический пользовательский интерфейс для verifier.exe
  • Новые автоматические проверка для переключения стека мониторинга
  • Новые параметры средства проверки драйверов для проверки DMA (также известной как проверка HAL), обнаружения взаимоблокировок и проверки SCSI
  • Изменения проверки ввода-вывода, объединяющие тесты уровня 1 и уровня 2, необязательные расширенные тесты проверки ввода-вывода
  • Новые расширения отладчика !взаимоблокировка и !dma
  • Новые проверки ошибок: 0xE6 (DRIVER_VERIFIER_DMA_VIOLATION) и 0xF1 (SCSI_VERIFIER_DETECTED_VIOLATION)
  • Дополнительные вложенные коды для существующих кодов проверка ошибок 0xC4 и 0xC9

Функции средства проверки драйверов также включают:

  • Новые параметры командной строки средства проверки Служебная программа verifier.exe имеет новый параметр VolatileDriverList, который можно использовать с ключевое слово /adddriver для указания списка драйверов, добавляемых в переменные параметры. VolatileDriverList можно использовать с ключевое слово /removedriver, чтобы указать список удаляемых драйверов.

  • Новые расширения !verifier Новые расширения !verifier отображают дополнительные сведения журнала при мониторинге низких ресурсов или при выполнении irQL-вызовов и вращения блокировок. Кроме того, доступна справка в Интернете.

    • Флаги, заданные с 0x4 приводит к тому, что на экране отображается журнал ошибок, внедренных средством проверки драйверов во время имитации нехватки ресурсов.
    • Флаги, заданные с 0x8, приводят к тому, что на экране отображается журнал последних изменений IRQL, внесенных проверяемыми драйверами.
    • Если флаги равны точно 0x4 или 0x8, параметр Quantity указывает количество записей или записей журнала для включения в отображение.
    • Параметр ? отображает краткий текст справки
  • Веб-справка по диспетчеру проверки драйверов. Справка по диспетчеру проверки драйверов в Интернете для диспетчера проверки драйверов может отображаться следующим способом:

    • Выберите и удерживайте (или щелкните правой кнопкой мыши) элемент в окне Диспетчер средств проверки драйверов и выберите во всплывающем меню Пункт Что это? .
    • Выберите вопросительный знак (?) в правом верхнем углу окна, а затем выберите элемент в окне Диспетчер средств проверки драйверов.