Поделиться через


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

Средство проверки драйверов доступно во всех версиях 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 из проверенных драйверов. Содержимое журнала отображается с помощью расширения отладчика Windows !verifier 0x200. Эти сведения могут быть полезны для понимания сценариев, в которых поток неожиданно работает в критическом регионе или пытается оставить критический регион, который он уже покинул.

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

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

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

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

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

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

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

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

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

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

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

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

  • Диспетчер проверки драйверов — новый графический пользовательский интерфейс (GUI) для verifier.exe
  • Новая автоматическая проверка переключения стека мониторинга
  • Новые параметры проверки драйверов для проверки DMA (также известной как проверка HAL), обнаружения взаимных блокировок и проверки SCSI
  • Изменения проверки ввода-вывода, которые объединяют тесты "Уровень 1" и "Уровень 2", необязательные расширенные тесты проверки ввода-вывода
  • Новые расширения отладчика !deadlock и !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 указывает количество записей или записей журнала для включения в отображение.
    • Параметр ? отображает краткий текст справки
  • Справка онлайн для Диспетчера проверки драйверов может отображаться одним из следующих способов:

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