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


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

Параметр проверки соответствия интерфейса драйвера устройства (DDI) определяет, правильно ли драйвер взаимодействует с ядром операционной системы Windows.

Заметка Этот параметр доступен начиная с Windows 8. Начиная с Windows 8.1, можно протестировать дополнительные правила, выбрав параметр Активации проверки соответствия DDI (дополнительно).

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

Параметр проверки соответствия DDI применяет те же правила использования интерфейса драйвера устройства (DDI), что и Static Driver Verifier, чтобы убедиться, что ваш драйвер вызывает функции на требуемом IRQL для этой функции или правильно приобретает и освобождает спинлоки.

Если этот параметр активен, и Driver Verifier обнаруживает, что драйвер нарушает одно из правил соответствия DDI, средство проверки драйверов инициирует проверку ошибок с кодом 0xC4 (с параметром 1 равен идентификатору конкретного правила соответствия).

При выборе опции проверки соответствия DDI включены следующие правила.

GuardedRegions (начиная с Windows 8.1)

IoSetCompletionExCompleteIrp (начиная с Windows 8.1)

IrqlApcLte

IrqlDispatch

IrqlExAllocatePool

IrqlExApcLte1

IrqlExApcLte2

IrqlExApcLte3

IrqlExPassive

IrqlIoApcLte

IrqlIoDispatch

IrqlIoPassive1

IrqlIoPassive2

IrqlIoPassive3

IrqlIoPassive4

IrqlIoPassive5

IrqlKeApcLte1

IrqlKeApcLte2

IrqlKeDispatchLte

IrqlKeReleaseSpinLock

IrqlKeSetEvent

IrqlMmApcLte

IrqlMmDispatch

IrqlObPassive

IrqlPsPassive

IrqlReturn (начиная с Windows 8.1)

IrqlRtlPassive

IrqlZwPassive

NdisOidComplete (начиная с Windows 8.1)

NdisOidDoubleComplete (начиная с Windows 8.1)

PnpRemove (начиная с Windows 8.1)

RequestedPowerIrp (начиная с Windows 8.1)

QueuedSpinLock (начиная с Windows 8.1)

SpinLock (начиная с Windows 8.1)

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

(Необязательно) IrqlNtifsApcPassive

(Необязательно) IrqlIoRtlZwPassive

Активация параметра проверки соответствия DDI

Вы можете активировать функцию проверки соответствия DDI для одного или нескольких драйверов с помощью диспетчера проверки драйверов или командной строки Verifier.exe. Дополнительные сведения см. в разделе "Выбор параметров средства проверки драйвера". Чтобы активировать или отключить параметр проверки соответствия DDI, необходимо перезапустить компьютер. Функция проверки соответствия DDI активируется при использовании стандартных параметров (/standard).

  • В командной строке

    В командной строке проверка соответствия DDI представлена проверятелем /flags 0x00020000 (бит 17). Чтобы активировать проверку соответствия DDI, используйте значение флага 0x00020000 или добавьте 0x00020000 в значение флага. Рассмотрим пример.

    verifier /flags 0x00020000 /driver MyDriver.sys
    

    Функция будет активна после следующей загрузки.

  • Использование диспетчера проверки драйверов

    1. Запустите диспетчер проверки драйверов. В окне командной строки введите средство проверки .
    2. Выберите "Создать настраиваемые параметры" (для разработчиков кода) и нажмите кнопку "Далее".
    3. Выберите отдельные параметры из полного списка.
    4. Выберите (отметьте) проверку на соответствие DDI.
    5. Перезапустите компьютер.

Проверка соответствия DDI (дополнительная)

Начиная с Windows 8.1 параметр проверки соответствия DDI (дополнительно) предоставляет дополнительные правила, чтобы определить, правильно ли драйвер взаимодействует с ядром операционной системы Windows. При выборе параметра проверки соответствия DDI (дополнительно) проверяются следующие правила:

Активация параметра проверки соответствия DDI (дополнительно)

Замечание

Эта проверка устарела начиная с Windows 10 сборки 19042 и выше

Вы можете активировать правила проверки соответствия DDI (дополнительные) для одного или нескольких драйверов с помощью диспетчера проверки драйверов или командной строки Verifier.exe. Дополнительные сведения см. в разделе "Выбор параметров средства проверки драйвера". Необходимо перезапустить компьютер, чтобы активировать или отключить параметр проверки соответствия DDI (дополнительно ).

  • В командной строке

    В командной строке проверка соответствия DDI представлена проверятелем /flags 0x00080000 (бит 19). Чтобы активировать проверку соответствия DDI (дополнительно), используйте значение флага 0x00080000 или добавьте 0x00080000 в значение флага. Рассмотрим пример.

    verifier /flags 0x00080000 /driver MyDriver.sys
    

    Функция будет активна после следующей загрузки.

  • Использование диспетчера проверки драйверов

    1. Чтобы запустить диспетчер проверки драйверов, введите средство проверки в окне командной строки.
    2. Выберите "Создать настраиваемые параметры" (для разработчиков кода) и нажмите кнопку "Далее".
    3. Выберите отдельные параметры из полного списка.
    4. Выберите (проверить) проверку соответствия DDI (дополнительно).
    5. Перезапустите компьютер.

Активация параметра проверки соответствия DDI (дополнительный параметр IRQL)

Дополнительные правила IRQL соответствия DDI можно активировать для одного или нескольких драйверов с помощью командной строки Verifier.exe. Дополнительные сведения см. в разделе "Выбор параметров средства проверки драйвера". Чтобы активировать или отключить дополнительные правила IRQL для соответствия DDI, необходимо перезапустить компьютер.

В командной строке дополнительная проверка соответствия DDI IRQL представлена значением класса правил 35. Рассмотрим пример.

verifier /ruleclasses 35 /driver MyDriver.sys

ИЛИ

verifier /rc 35 /driver MyDriver.sys

Дополнительный набор правил IRQL состоит из следующих двух правил.

(Необязательно) IrqlNtifsApcPassive

(Необязательно) IrqlIoRtlZwPassive