Sincronización y DPC con subprocesos

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 cumplir ciertas reglas para sincronizarse correctamente en IRQL = PASSIVE_LEVEL y en IRQL = DISPATCH_LEVEL, ya que una rutina CustomThreadedDpc puede ejecutarse en ambas IRQL.

En el caso de un bloqueo de número normal, se aplican las siguientes reglas:

Las reglas de bloqueos de número en cola son similares:

Dado que KeAcquireSpinLockForDpc y KeAcquireInStackQueuedSpinLockForDpc no restablecen el IRQL cuando se llama en 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.