Regla QueuedSpinLock (wdm)

La regla QueuedSpinLock especifica que el controlador llama a KeAcquireInStackQueuedSpinLock antes de llamar a KeReleaseInStackQueuedSpinLock y que el controlador llama a KeReleaseInStackQueuedSpinLock antes de cualquier llamada posterior a KeAcquireInStackQueuedSpinLock.

Las llamadas anidadas se permiten si adquieren y liberan recursos diferentes. Las llamadas anidadas para adquirir o liberar los mismos recursos infringen esta regla.

Esta regla también especifica que el controlador ha llamado a KeReleaseInStackQueuedSpinLock para liberar todos los bloqueos de número en cola antes de que finalice la rutina de envío o cancelar la rutina.

Modelo de controlador: WDM

Comprobaciones de errores encontradas con esta regla: Comprobación de errores 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (0x00040006)

Cómo probar

En tiempo de compilación

Ejecute el Comprobador de controladores estáticos y especifique la regla QueuedSpinLock .

Usa los pasos siguientes para ejecutar un análisis de tu código:
  1. Prepara el código (usa declaraciones de tipos de rol).
  2. Ejecuta el comprobador de controlador estático.
  3. Consulta y analiza los resultados.

Para obtener más información, consulte Uso del comprobador de controladores estáticos para buscar defectos en controladores.

En tiempo de ejecución

Ejecute el Comprobador de controladores y seleccione la opción comprobación de cumplimiento de DDI .

Se aplica a

KeAcquireInStackQueuedSpinLockKeReleaseInStackQueuedSpinLock