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


Правило SpinLock (wdm)

Правило SpinLock указывает, что после вызова KeAcquireSpinLock драйвер вызывает KeReleaseSpinLock перед последующими вызовами KeAcquireSpinLock или KeAcquireSpinLockRaiseToDpc.

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

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

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

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

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

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

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

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

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

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

Запустите средство проверки драйверов и выберите параметр проверка соответствия DDI .

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

KeAcquireSpinLockKeAcquireSpinLockRaiseToDpcKeReleaseSpinLockKeTryToAcquireSpinLockAtDpcLevel