Параметры средства проверки драйверов и классы правил
В этом разделе описываются необязательные функции и классы правил в средстве проверки драйверов. См . стандартные параметры списка параметров, включенных при использовании стандартных параметров.
Примечание.
Некоторые автоматические проверки всегда выполняются на проверяемом драйвере независимо от того, какие параметры были выбраны. Если драйвер использует память при неправильном IRQL, неправильно вызывает или освобождает блокировки спина и выделения памяти, неправильно переключает стеки памяти или освобождает пул памяти без первого удаления таймеров, средство проверки драйверов обнаружит это поведение. Когда драйвер выгружается, средство проверки драйверов проверяет правильность выпуска ресурсов.
Включение классов правил с помощью классов /ruleclasses
Начиная с Windows 10 версии 17627 и более поздних версий, можно включить классы правил со следующим синтаксисом:
/ruleclasses or /rc [<ruleclass_1> <ruleclass_2> ... <ruleclass_k>]
Обратите внимание, что при включении нескольких классов (представленных положительным десятичным целым числом ниже), разделяйте каждое целое число символом пробела.
Ниже приведены описания этих классов правил.
Стандартные классы правил
Класс правил | Десятичный идентификатор |
---|---|
Специальный пул | 1 |
Принудительное проверка IRQL | 2 |
Отслеживание пула | 4 |
Проверка ввода-вывода | 5 |
Обнаружение взаимоблокировок | 6 |
Проверка DMA | 8 |
Проверки безопасности | 9 |
Другие проверки | 12 |
Проверка соответствия DDI | 18 |
Проверка WDF | 34 |
Дополнительные классы правил
Эти классы правил предназначены для конкретного тестирования сценариев. Классы правил помечены как (*) требуют проверки ввода-вывода (5), которые будут автоматически включены. Флаги, помеченные как "*", поддерживают отключение отдельных правил.
Класс правил | Десятичный идентификатор |
---|---|
Случайное моделирование низких ресурсов | 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 или при удержании блокировки спина, средство проверки драйверов обнаруживает это поведение.
Моделирование низких ресурсов (называемое случайным моделированием низких ресурсов в Windows 8.1)
Если этот параметр включен, средство проверки драйверов случайно завершает запросы на выделение пула и другие запросы ресурсов. Введя эти ошибки распределения в систему, средство проверки драйверов проверяет способность водителя справиться с низкой ситуацией с ресурсом.
Если этот параметр включен, средство проверки драйверов проверяет, освобождает ли драйвер все выделения памяти при выгрузке. Это показывает утечки памяти.
Если этот параметр активен, средство проверки драйверов выделяет irps драйвера из специального пула и отслеживает обработку ввода-вывода драйвера. Это обнаруживает незаконное или несогласованное использование подпрограмм ввода-вывода.
Если этот параметр активен, средство проверки драйверов отслеживает использование драйверов блокировки спина, мьютексов и быстрых мьютексов. Это определяет, может ли код драйвера вызвать взаимоблокировку в какой-то момент.
Расширенная проверка ввода-вывода
Если этот параметр активен, средство проверки драйверов отслеживает вызовы нескольких подпрограмм диспетчера ввода-вывода и выполняет стресс-тестирование PnP IRPs, power IRPs и WMI IRP. В Windows 7 и более поздних версиях операционной системы Windows все функции расширенной проверки ввода-вывода включены в состав проверки ввода-вывода и больше не доступны и не нужны для выбора этого параметра в диспетчере проверки драйверов или в командной строке.
Если этот параметр активен, средство проверки драйверов отслеживает использование драйверов подпрограмм DMA. Это обнаруживает неправильное использование буферов DMA, адаптеров и регистров карт.
(Windows Vista и более поздние версии) Если этот параметр активен, средство проверки драйверов ищет распространенные ошибки, которые могут привести к уязвимостям безопасности, например ссылку на адреса в пользовательском режиме по подпрограммам в режиме ядра.
(Windows Vista и более поздние версии) Если этот параметр активен, средство проверки драйверов ищет распространенные причины сбоя драйвера, например неправильное использование освобожденной памяти.
Принудительное ожидание запросов ввода-вывода
(Windows Vista и более поздние версии) Если этот параметр активен, средство проверки драйверов проверяет ответ драйвера на STATUS_PENDING возвращаемых значений, возвращая STATUS_PENDING для случайных вызовов IoCallDriver.
(Windows Server 2003 и более поздних версий) Если этот параметр активен, средство проверки драйверов отслеживает использование ИРВ драйвера и создает журнал использования IRP.
(Windows Vista и более поздние версии) Если этот параметр активен, средство проверки драйверов отслеживает драйвер минипорта Storport для неправильного использования экспортированных подпрограмм Storport, чрезмерных задержек и неправильной обработки запросов Storport.
Задержка задержки Power Framework
(Начиная с Windows 8) Если этот параметр активен, средство проверки драйверов случайным образом определяет расписания потоков для устранения ошибок параллелизма в драйверах, использующих платформу управления питанием (PoFx). Этот параметр не рекомендуется использовать для драйверов, которые напрямую не используют платформу управления питанием (PoFx).
(Начиная с Windows 8) Если этот параметр активен, средство проверки драйверов применяет набор правил интерфейса драйвера устройства (DDI), которые проверяют правильное взаимодействие между драйвером и интерфейсом ядра операционной системы.
Инвариантная проверка MDL для стека
(Начиная с Windows 8) Параметр "Инвариантная проверка MDL для стека " отслеживает, как драйвер обрабатывает инвариантные буферы MDL в стеке драйверов. Средство проверки драйверов может обнаружить незаконное изменение инвариантных буферов MDL. Чтобы использовать этот параметр, проверка ввода-вывода должна быть включена по крайней мере на одном драйвере.
Инвариантная проверка MDL для драйвера
(Начиная с Windows 8) Параметр "Инвариантная проверка MDL для драйвера" отслеживает, как драйвер обрабатывает инвариантные буферы MDL на основе каждого драйвера. Этот параметр обнаруживает незаконное изменение инвариантных буферов MDL. Чтобы использовать этот параметр, необходимо включить проверку ввода-вывода по крайней мере на одном драйвере.
Внедрение сбоев на основе стека
(Доступно только в Windows 8 и WDK 8) Параметр внедрения сбоев на основе стека внедряет сбои ресурсов в драйверы режима ядра. Этот параметр использует специальный драйвер KmAutoFail.sys вместе с средством проверки драйверов для проникновения путей обработки ошибок драйвера.
Систематическое моделирование низких ресурсов
(Начиная с Windows 8.1) Вариант имитации систематических низких ресурсов внедряет сбои ресурсов в драйверы режима ядра.
(Начиная с Windows 8.1) Если этот параметр активен, средство проверки драйверов применяет набор правил NDIS и беспроводной локальной сети (WIFI), которые проверяют правильное взаимодействие между мини-драйвером NDIS и ядром операционной системы.
Задержка задержки синхронизации ядра
(Начиная с Windows 8.1) Этот параметр случайным образом определяет расписания потоков для обнаружения ошибок параллелизма в драйверах.
Проверка коммутатора виртуальной машины
(Начиная с Windows 8.1) Этот параметр отслеживает драйверы фильтров (расширения расширяемого коммутатора), которые выполняются внутри расширяемого коммутатора Hyper-V.
Проверка интерфейса порта или Минипорта
Проверка интерфейса порта или минипорта позволяет средство проверки драйвера проверять интерфейс DDI между PortCls.sys и его драйверами аудиопорта, а также ks.sys и его мини-портов AVStream. Ознакомьтесь с правилами драйверов и правил AVStream для звуковых драйверов.
При использовании безопасности на основе виртуализации для изоляции целостности кода единственным способом, который может стать исполняемым памятью ядра, является проверка целостности кода. Это означает, что страницы памяти ядра никогда не могут быть записываемыми и исполняемыми (W+X) и исполняемым кодом нельзя напрямую изменять. Проверки целостности кода обеспечивают совместимость этих правил целостности кода и обнаруживают нарушения.
Проверка WDF проверяет, соответствует ли драйвер в режиме ядра требованиям к драйверу в режиме ядра (KMDF).
Дополнительная проверка IRQL
Дополнительная проверка IRQL расширяет правила проверки соответствия DDI IRQL для PASSIVE_LEVEL. Он состоит из двух правил:
- Правило IrqlIoRtlZwPassive указывает, что драйвер вызывает DDIs, перечисленные в правиле, только если он выполняется в IRQL = PASSIVE_LEVEL.
- Правило IrqlNtifsApcPassive указывает, что драйвер вызывает DDIs, перечисленные в правиле, только если он выполняется в IRQL = PASSIVE_LEVEL или в IRQL <= APC_LEVEL.
Проверки изоляции драйверов критически важны для проверки требований к изоляции пакета драйвера среды выполнения драйверов Windows Для получения дополнительных сведений см. статью "Начало разработки драйверов Windows". Проверки монитора реестра считывают и записывают, которые не допускаются для изолированных пакетов драйверов.
Стандартные параметры
Параметры, включенные в стандартные параметры |
---|
Расширенная проверка ввода-вывода (в Windows 7 и более поздних версиях этот параметр автоматически активируется при выборе проверки ввода-вывода) |
Другие проверки (Windows Vista и более поздние версии) |
Проверка соответствия DDI (начиная с Windows 8) |
Параметры средства проверки драйверов, требующие проверки ввода-вывода
Существует четыре варианта, которые требуют, чтобы сначала включить проверку ввода-вывода. Если проверка ввода-вывода не включена, эти параметры не включены.