Compartir a través de


Sincronización y DPC con subproceso

Para sincronizar el acceso a una ubicación de memoria a la que se accede desde dentro y fuera de una rutina CustomThreadedDpc , un controlador puede usar bloqueos de giro normales o bloqueos de giro en cola. Al hacerlo, el controlador debe obedecer ciertas reglas para sincronizar correctamente en IRQL = PASSIVE_LEVEL y en IRQL = DISPATCH_LEVEL, ya que una rutina CustomThreadedDpc puede ejecutarse en ambos IRQLs.

Para un bloqueo de giro normal, se aplican las siguientes reglas:

Las reglas para los cerrojos de espera en cola son similares:

Dado que KeAcquireSpinLockForDpc y KeAcquireInStackQueuedSpinLockForDpc no restablecen el IRQL cuando se llama a DISPATCH_LEVEL, se ejecutan más rápido que KeAcquireSpinLock y KeAcquireInStackQueuedSpinLock, respectivamente.

Para obtener más información sobre los bloqueos de número, consulte Bloqueos de número.