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


Правило CriticalRegions (wdm)

Правило CriticalRegions указывает, что драйвер должен вызвать KeEnterCriticalRegion перед вызовом KeLeaveCriticalRegion и что драйвер вызывает KeLeaveCriticalRegion перед любыми последующими вызовами KeEnterCriticalRegion. (Вложенные вызовы разрешены.)

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

В документации по WDK для KeEnterCriticalRegion и KeLeaveCriticalRegion объясняется, что вызывающий объект этих функций может выполняться по адресу IRQL<=APC_LEVEL. В этом случае это правило применяет рекомендации.

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

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

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

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

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

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

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

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

Запустите средство проверки драйверов и выберите параметр Проверка соответствия DDI (дополнительная).

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

ExEnterCriticalRegionAndAcquireResourceExclusiveExReleaseResourceAndLeaveCriticalRegionKeEnterCriticalRegionKeLeaveCriticalRegion