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


Правило IrqlIoRtlZwPassive (wdm)

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

Это правило дополняет правила IRQL проверки соответствия DDI для PASSIVE_LEVEL. Дополнительные сведения см. в разделе Набор правил Irql (WDM).

Модель драйвера: WDM

Проверка ошибок, обнаруженных с помощью этого правила: 0xC4 проверки ошибок: DRIVER_VERIFIER_DETECTED_VIOLATION (0x20023)

Пример

Следующий код нарушает это правило:

//
// KeAcquireSpinLock raises the IRQL to DISPATCH_LEVEL.
//

KeAcquireSpinLock (&Lock, &OldIrql);

//
// ERROR: IoGetDriverDirectory can only be called at IRQL == PASSIVE_LEVEL.
//

IoGetDriverDirectory (DriverObject,
                      DriverDirectoryData,
                      0,
                      &DirectoryHandle);

KeReleaseSpinLock (&Lock, OldIrql);

Дополнительные сведения об уровнях IRQL см. в разделах Подпрограммы диспетчеризации и IRQL и Управление приоритетами оборудования.

Как тестировать

Во время компиляции

Запустите средство проверки статических драйверов и укажите правило IrqlIoRtlZwPassive .

Чтобы выполнить анализ кода, выполните следующие действия.
  1. Подготовьте код (используйте объявления типов ролей).
  2. Запустите средство проверки статических драйверов.
  3. Просмотр и анализ результатов.

Дополнительные сведения см. в статье Использование средства проверки статических драйверов для поиска дефектов в драйверах.

во время выполнения

Вы можете активировать правила СООТВЕТСТВИЯ DDI — дополнительные правила IRQL для одного или нескольких драйверов с помощью командной строки Verifier.exe. Дополнительные сведения см. в разделе Выбор параметров средства проверки драйверов. Необходимо перезагрузить компьютер, чтобы активировать или деактивировать правила соответствия DDI — дополнительные правила IRQL.

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

verifier /ruleclasses 35 /driver MyDriver.sys

ИЛИ

verifier /rc 35 /driver MyDriver.sys

Дополнительная проверка IRQL будет активна после перезагрузки компьютера.

Применяется к

IoCreateFileEx

IoCreateFileSpecifyDeviceObjectHint

IoGetDeviceDirectory

IoGetDriverDirectory

IoOpenDeviceInterfaceRegistryKey

IoOpenDeviceRegistryKey

RtlCreateRegistryKey

RtlCreateSystemVolumeInformationFolder

RtlWriteRegistryValue

ZwCreateDirectoryObject

ZwCreateFile

ZwCreateKeyTransacted

ZwDeleteFile

ZwDeleteValueKey

ZwFlushBuffersFileEx

ZwFlushBuffersFile

ZwRenameKey

ZwSetEaFile

ZwSetInformationFile

ZwSetInformationKey