Compartilhar via


Regra MarkingQueuedIrps (wdm)

A regra MarkingQueuedIrps especifica que o driver chama IoMarkIrpPending para um IRP que requer processamento adicional apenas enquanto mantém um bloqueio de rotação. Essa regra se aplica somente quando o driver adiciona o IRP a uma fila gerenciada pelo driver.

Especificamente, o driver viola essa regra somente quando todos os eventos a seguir ocorrem.

Os drivers devem chamar IoMarkIrpPending para um IRP enfileirado apenas enquanto mantém um bloqueio de rotação. Caso contrário, um IRP poderia ser desempacoizado, concluído por outra rotina de driver e liberado pelo sistema antes que a chamada para IoMarkIrpPending ocorresse, causando assim uma falha.

Para obter mais informações, consulte Sincronizando o cancelamento de IRP.

Modelo de driver: WDM

Como testar

Em tempo de compilação

Execute o Verificador de Driver Estático e especifique a regra MarkingQueuedIrps .

Use as seguintes etapas para executar uma análise do código:
  1. Prepare seu código (use declarações de tipo de função).
  2. Execute o Verificador de Driver Estático.
  3. Exiba e analise os resultados.

Para obter mais informações, consulte Usando o verificador de driver estático para localizar defeitos em drivers.

Aplica-se a

InsertHeadListIoCallDriverIoMarkIrpPendingKeAcquireInStackQueuedSpinLockKeAcquireSpinLockKeInsertByKeyDeviceQueueKeInsertDeviceQueueKeInsertQueueDpcKeReleaseInStackQueuedSpinLockKeReleaseSpinLockPoCallDriverRemoveHeadList