Función KeAcquireInStackQueuedSpinLockAtDpcLevel (wdm.h)

La rutina KeAcquireInStackQueuedSpinLockAtDpcLevel adquiere un bloqueo de número en cola cuando el autor de la llamada ya se está ejecutando en IRQL >= DISPATCH_LEVEL.

Sintaxis

void KeAcquireInStackQueuedSpinLockAtDpcLevel(
  PKSPIN_LOCK         SpinLock,
  PKLOCK_QUEUE_HANDLE LockHandle
);

Parámetros

SpinLock

[in, out] Especifica el bloqueo de número que se va a adquirir. Este parámetro debe haberse inicializado mediante una llamada a la rutina KeInitializeSpinLock .

LockHandle

[out] Puntero a una estructura de KLOCK_QUEUE_HANDLE proporcionada por el autor de la llamada que la rutina puede usar para devolver el identificador de cola de bloqueo de número. Para liberar el bloqueo, el autor de la llamada pasa este valor a la rutina KeReleaseInStackQueuedSpinLockFromDpcLevel .

Valor devuelto

None

Observaciones

Para un controlador que se ejecuta en IRQL >= DISPATCH_LEVEL, KeAcquireInStackQueuedSpinLockAtDpcLevel adquiere un bloqueo de número como bloqueo de número en cola. Para obtener más información, consulte Bloqueos de número en cola. Para liberar el bloqueo de número, llame a la rutina KeReleaseInStackQueuedSpinLockFromDpcLevel .

Los controladores que ya se ejecutan en un IRQL >= DISPATCH_LEVEL pueden llamar a esta rutina para adquirir el bloqueo de giro en cola más rápidamente. De lo contrario, use la rutina KeAcquireInStackQueuedSpinLock para adquirir el bloqueo de número.

Para un controlador que se ejecuta en IRQL > DISPATCH_LEVEL, esta rutina adquiere el bloqueo sin modificar el IRQL actual. Para un controlador que se ejecuta en IRQL = DISPATCH_LEVEL, esta rutina mejora el rendimiento al adquirir el bloqueo sin establecer primero IRQL en DISPATCH_LEVEL, que, en este caso, sería una operación redundante.

Al igual que los bloqueos de giro normales, los bloqueos de giro en cola solo deben usarse en circunstancias muy especiales. Para obtener una descripción de cuándo usar bloqueos de número, consulte KeAcquireSpinLock.

Los controladores no deben combinar llamadas a KeAcquireSpinLock y KeAcquireInStackQueuedSpinLock en el mismo bloqueo de número. Siempre se debe adquirir o liberar un bloqueo de número como bloqueo de giro en cola o como bloqueo de giro normal.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP
Encabezado wdm.h
IRQL IRQL >= DISPATCH_LEVEL
Reglas de cumplimiento de DDI HwStorPortProhibitedDDIs(storport)

Consulte también

KLOCK_QUEUE_HANDLE

KeAcquireSpinLock

KeAcquireInStackQueuedSpinLock

KeInitializeSpinLock

KeReleaseInStackQueuedSpinLockFromDpcLevel