Параметры средства проверки драйверов и классы правил

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

Примечание

Некоторые автоматические проверки всегда выполняются для проверяемого драйвера, независимо от того, какие параметры были выбраны. Если драйвер использует память при неправильном IRQL, неправильно вызывает или освобождает спин-блокировки и выделение памяти, неправильно переключает стеки или освобождает пул памяти без предварительного удаления таймеров, средство проверки драйверов обнаружит это поведение. При выгрузке драйвера средство проверки драйверов проверка, чтобы убедиться, что он правильно освободил свои ресурсы.

Включение классов правил с помощью /ruleclasses

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

/ruleclasses or /rc [<ruleclass_1> <ruleclass_2> ... <ruleclass_k>]

Обратите внимание, что при включении нескольких классов (представленных положительным десятичным целым числом ниже) разделяйте каждое целое число символом пробела.

Описание этих классов правил можно найти ниже.

Классы стандартных правил

Класс rule Десятичный идентификатор
Специальный пул 1
Принудительная проверка IRQL 2
Отслеживание пула 4
Проверка ввода-вывода 5
Обнаружение взаимоблокировки 6
Проверка DMA 8
Проверки безопасности. 9
Прочие проверки 12
Проверка соответствия DDI 18
Проверка WDF 34

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

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

Класс rule Десятичный идентификатор
Симуляция случайных низких ресурсов 3
Принудительное выполнение ожидающих запросов ввода-вывода (*) 10
Ведение журнала IRP 11
Инвариантная проверка MDL для стека (*) 14
Инвариантная проверка MDL для драйвера (*) 15
Нечеткое выполнение задержки Power Framework 16
Проверка интерфейса порта или минипорта 17
Систематическое моделирование нехватки ресурсов 19
Проверка соответствия DDI (дополнительная) 20
Нечеткое выполнение задержки синхронизации ядра 24
Проверка коммутатора виртуальной машины 25
Проверки целостности кода 26
Проверки изоляции драйвера (требуется 36) 33
Дополнительная проверка IRQL 35
Включение DIF 36

Необязательные описания классов функций и правил

Специальный пул

Если этот параметр включен, средство проверки драйверов выделяет большую часть запросов к памяти драйвера из специального пула. Этот специальный пул отслеживается на наличие переполнения памяти, недостаточного объема памяти и доступа к памяти после освобождения.

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

Если этот параметр включен, средство проверки драйверов создает крайнюю нехватку памяти на драйвере, блокируя код, доступный для страниц. Если драйвер пытается получить доступ к постраничной памяти при неправильном IRQL или удерживая спин-блокировку, средство проверки драйверов обнаруживает это поведение.

Моделирование с низкими ресурсами (в Windows 8.1 называется симуляцией случайных низких ресурсов)

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

Отслеживание пула

Если этот параметр включен, средство проверки драйверов проверяет, освободил ли драйвер все выделения памяти при выгрузке. Это позволяет выявить утечки памяти.

Проверка ввода-вывода

Если этот параметр активен, средство проверки драйверов выделяет irp драйвера из специального пула и отслеживает обработку ввода-вывода драйвера. Это позволяет обнаружить незаконное или несогласованное использование процедур ввода-вывода.

Обнаружение взаимоблокировки

Если этот параметр активен, средство проверки драйверов отслеживает использование драйвером спин-блокировок, мьютексов и быстрых мьютексов. Это определяет, может ли код драйвера вызвать взаимоблокировку в какой-то момент.

Расширенная проверка ввода-вывода

Если этот параметр активен, средство проверки драйверов отслеживает вызовы нескольких подпрограмм диспетчера ввода-вывода и выполняет нагрузочное тестирование PnP IRP, irPs питания и WMI IRP. В Windows 7 и более поздних версиях операционной системы Windows все функции расширенной проверки ввода-вывода включены в состав проверки ввода-вывода , и этот параметр больше недоступен и не требуется выбирать в диспетчере проверки драйверов или в командной строке.

Проверка DMA

Если этот параметр активен, средство проверки драйверов отслеживает использование драйвером процедур DMA. При этом обнаруживается неправильное использование буферов DMA, адаптеров и регистров карт.

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

(Windows Vista и более поздних версий) Если этот параметр активен, средство проверки драйверов ищет распространенные ошибки, которые могут привести к уязвимостям системы безопасности, например ссылку на адреса в пользовательском режиме в подпрограммах режима ядра.

Прочие проверки

(Windows Vista и более поздних версий) Если этот параметр активен, средство проверки драйверов ищет распространенные причины сбоев драйвера, такие как неправильное использование освобожденной памяти.

Принудительное выполнение ожидающих запросов ввода-вывода

(Windows Vista и более поздних версий) Если этот параметр активен, средство проверки драйверов проверяет ответ драйвера на STATUS_PENDING возвращаемые значения, возвращая STATUS_PENDING для случайных вызовов IoCallDriver.

Ведение журнала IRP

(Windows Server 2003 и более поздние версии) Если этот параметр активен, средство проверки драйверов отслеживает использование драйвером IRP и создает журнал использования IRP.

Проверка Storport

(Windows Vista и более поздних версий) Если этот параметр активен, средство проверки драйверов отслеживает драйвер мини-порта Storport на наличие неправильного использования экспортированных подпрограмм Storport, чрезмерных задержек и неправильной обработки запросов Storport.

Нечеткое выполнение задержки в Power Framework

(Начиная с Windows 8) Если этот параметр активен, средство проверки драйверов случайным образом определяет расписания потоков, чтобы устранить ошибки параллелизма в драйверах, использующих платформу управления питанием (PoFx). Этот параметр не рекомендуется использовать для драйверов, которые напрямую не используют платформу управления питанием (PoFx).

Проверка соответствия DDI

(Начиная с Windows 8) Если этот параметр активен, средство проверки драйверов применяет набор правил интерфейса драйвера устройства (DDI), которые проверка для правильного взаимодействия между драйвером и интерфейсом ядра операционной системы.

Инвариантная проверка MDL для стека

(Начиная с Windows 8) Параметр Инвариантная проверка MDL для стека отслеживает, как драйвер обрабатывает инвариантные буферы MDL в стеке драйверов. Средство проверки драйверов может обнаруживать незаконное изменение инвариантных буферов MDL. Чтобы использовать этот параметр, проверка ввода-вывода должна быть включена по крайней мере в одном драйвере.

Инвариантная проверка MDL для драйвера

(Начиная с Windows 8) Параметр Invariant MDL Checking for Driver отслеживает, как драйвер обрабатывает инвариантные буферы MDL для каждого драйвера. Этот параметр обнаруживает недопустимое изменение инвариантных буферов MDL. Чтобы использовать этот параметр, необходимо включить проверку ввода-вывода по крайней мере для одного драйвера.

Внедрение сбоя на основе стека

(Доступно только в Windows 8 и WDK 8) Параметр Внедрения сбоев на основе стека внедряет сбои ресурсов в драйверы режима ядра. Этот параметр использует специальный драйвер, KmAutoFail.sys, в сочетании с проверятелем драйверов , чтобы проникнуть в пути обработки ошибок драйвера.

Систематическое моделирование нехватки ресурсов

(Начиная с Windows 8.1) Параметр систематического моделирования с низкими ресурсами внедряет сбои ресурсов в драйверы режима ядра.

Проверка NDIS/WIFI

(Начиная с Windows 8.1) Если этот параметр активен, средство проверки драйверов применяет набор правил NDIS и беспроводной локальной сети (WIFI), которые проверка для правильного взаимодействия между драйвером мини-порта NDIS и ядром операционной системы.

Нечеткое выполнение задержки синхронизации ядра

(Начиная с Windows 8.1) Этот параметр рандомизирует расписания потоков для обнаружения ошибок параллелизма в драйверах.

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

(Начиная с Windows 8.1) Этот параметр отслеживает драйверы фильтров (расширения расширяемых коммутаторов), которые выполняются внутри расширяемого коммутатора Hyper-V.

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

Проверка портов и мини-портов позволяет средство проверки драйверов проверять интерфейс DDI между PortCls.sys и драйверами аудиопорта, а также ks.sys и драйверами avStream miniport. См. статьи Правила для драйверов AVStream и Правила для аудиодрайверов.

Проверка целостности кода

При использовании безопасности на основе виртуализации для изоляции целостности кода единственным способом, который может стать исполняемой памятью ядра, является проверка целостности кода. Это означает, что страницы памяти ядра никогда не могут быть записываемыми и исполняемыми (W+X), а исполняемый код нельзя изменять напрямую. Проверки целостности кода обеспечивают совместимость этих правил целостности кода и выявляют нарушения.

Проверка WDF

Проверка WDF проверяет, правильно ли драйвер режима ядра соответствует требованиям платформы Kernel-Mode драйверов (KMDF).

Дополнительная проверка IRQL

Дополнительная проверка IRQL дополняет правила IRQL проверки соответствия DDI для PASSIVE_LEVEL. Он состоит из двух правил:

  • Правило IrqlIoRtlZwPassive указывает, что драйвер вызывает DID, перечисленные в правиле, только если выполняется в irQL = PASSIVE_LEVEL.
  • Правило IrqlNtifsApcPassive указывает, что драйвер вызывает DID, перечисленные в правиле, только если выполняется либо в IRQL = PASSIVE_LEVEL, либо в IRQL <= APC_LEVEL.

Проверки изоляции драйверов

Проверки изоляции драйверов имеют решающее значение для проверки требований к изоляции пакета драйверов среды выполнения в драйверах Windows Дополнительные сведения см. в статье Начало работы с драйверами Windows. Эти проверки отслеживают операции чтения и записи реестра, которые не разрешены для изолированных пакетов драйверов.

Стандартные параметры

Параметры, включенные в стандартные параметры

Специальный пул

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

Отслеживание пула

Проверка ввода-вывода

Обнаружение взаимоблокировок

Расширенная проверка ввода-вывода (в Windows 7 и более поздних версиях этот параметр автоматически активируется при выборе проверки ввода-вывода)

Проверка DMA

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

Прочие проверки (Windows Vista и более поздние версии)

Проверка соответствия DDI (начиная с Windows 8)

Параметры средства проверки драйверов, требующие проверки ввода-вывода

Существует четыре варианта, которые требуют, чтобы сначала включить проверку ввода-вывода. Если проверка ввода-вывода не включена, эти параметры не включены.