Compartilhar via


Regra QueuedSpinLock (wdm)

A regra QueuedSpinLock especifica que o driver chama KeAcquireInStackQueuedSpinLock antes de chamar KeReleaseInStackQueuedSpinLock e que o driver chama KeReleaseInStackQueuedSpinLock antes de qualquer chamada subsequente para KeAcquireInStackQueuedSpinLock.

Chamadas aninhadas serão permitidas se estiverem adquirindo e liberando recursos diferentes. Chamadas aninhadas para adquirir ou liberar os mesmos recursos violam essa regra.

Essa regra também especifica que o driver chamou KeReleaseInStackQueuedSpinLock para liberar todos os bloqueios de rotação enfileirados antes que a rotina de expedição ou a rotina de cancelamento termine.

Modelo de driver: WDM

Marcar de bugs encontradas com esta regra: 0xC4 de Verificação de Bugs: DRIVER_VERIFIER_DETECTED_VIOLATION (0x00040006)

Como testar

Em tempo de compilação

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

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.

Em tempo de execução

Execute o Verificador de Driver e selecione a opção de verificação de conformidade da DDI .

Aplica-se a

KeAcquireInStackQueuedSpinLockKeReleaseInStackQueuedSpinLock