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


Правило MarkingQueuedIrps (wdm)

Правило MarkingQueuedIrps указывает, что драйвер вызывает IoMarkIrpPending для IRP, который требует дальнейшей обработки только при удержании спиновой блокировки. Это правило применяется только в том случае, если драйвер добавляет IRP в очередь, управляемую драйвером.

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

Драйверы должны вызывать IoMarkIrpPending для очереди IRP только при удержании спин-блокировки. В противном случае IRP может быть выведен из очереди, завершен другой подпрограммой драйвера и освобожден системой до вызова IoMarkIrpPending , что приведет к сбою.

Дополнительные сведения см. в разделе Синхронизация отмены IRP.

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

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

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

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

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

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

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

InsertHeadListIoCallDriverIoMarkIrpPendingKeAcquireInStackQueuedSpinLockKeAcquireSpinLockKeInsertByKeyDeviceQueueKeInsertDeviceQueueKeInsertQueueDpcKeReleaseInStackQueuedSpinLockKeReleaseSpinLockPoCallDriverRemoveHeadList