Función KeAcquireInStackQueuedSpinLock (wdm.h)

La rutina KeAcquireInStackQueuedSpinLock adquiere un bloqueo de número en cola.

Sintaxis

void KeAcquireInStackQueuedSpinLock(
  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 con KeInitializeSpinLock.

LockHandle

[out] Puntero a una variable 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. El autor de la llamada pasa este valor a KeReleaseInStackQueuedSpinLock al liberar el bloqueo. Normalmente, los controladores deben asignar la estructura en la pila cada vez que adquieren el bloqueo. Un controlador no debe usar el mismo KLOCK_QUEUE_HANDLE desde varios sitios de llamada.

Valor devuelto

None

Observaciones

KeAcquireInStackQueuedSpinLock 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. El llamador libera el bloqueo de número llamando a la rutina KeReleaseInStackQueuedSpinLock .

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.

Esta rutina eleva el nivel IRQL a DISPATCH_LEVEL al adquirir el bloqueo de número. Si se garantiza que el autor de la llamada ya se está ejecutando en DISPATCH_LEVEL, es más eficaz llamar a KeAcquireInStackQueuedSpinLockAtDpcLevel.

La llamada a KeReleaseInStackQueuedSpinLock que libera el bloqueo de número debe producirse en IRQL = DISPATCH_LEVEL. Esta llamada restaura el IRQL original que el sistema operativo guardó al principio de la llamada KeAcquireInStackQueuedSpinLock .

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 Valor
Header wdm.h (incluya Wdm.h)
IRQL IRQL <= DISPATCH_LEVEL
Reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport), MarkingQueuedIrps(wdm), QueuedSpinLock(storport), QueuedSpinLock(wdm), QueuedSpinLockRelease(storport), QueuedSpinLockRelease(wdm)

Consulte también

KLOCK_QUEUE_HANDLE

KeAcquireInStackQueuedSpinLockAtDpcLevel

KeAcquireSpinLock

KeInitializeSpinLock

KeReleaseInStackQueuedSpinLock