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) |