Condividi tramite


Funzione KeAcquireInStackQueuedSpinLockAtDpcLevel (wdm.h)

La routine KeAcquireInStackQueuedSpinLockAtDpcLevel acquisisce un blocco spin in coda quando il chiamante è già in esecuzione in IRQL >= DISPATCH_LEVEL.

Sintassi

void KeAcquireInStackQueuedSpinLockAtDpcLevel(
  PKSPIN_LOCK         SpinLock,
  PKLOCK_QUEUE_HANDLE LockHandle
);

Parametri

SpinLock

[in, out] Specifica il blocco di rotazione da acquisire. Questo parametro deve essere stato inizializzato da una chiamata alla routine KeInitializeSpinLock .

LockHandle

[out] Puntatore a una struttura fornita dal chiamante KLOCK_QUEUE_HANDLE che la routine può usare per restituire l'handle della coda di blocco di rotazione. Per rilasciare il blocco, il chiamante passa questo valore alla routine KeReleaseInStackQueuedSpinLockFromDpcLevel .

Valore restituito

nessuno

Osservazioni

Per un driver in esecuzione in IRQL >= DISPATCH_LEVEL, KeAcquireInStackQueuedSpinLockAtDpcLevel acquisisce un blocco spin come blocco di rotazione in coda. Per altre informazioni, vedere Blocchi di selezione in coda. Per rilasciare il blocco di selezione, chiamare la routine KeReleaseInStackQueuedSpinLockFromDpcLevel .

I driver già in esecuzione in irQL >= DISPATCH_LEVEL possono chiamare questa routine per acquisire più rapidamente il blocco di rotazione in coda. In caso contrario, usare la routine KeAcquireInStackQueuedSpinLock per acquisire il blocco di selezione.

Per un driver in esecuzione in IRQL > DISPATCH_LEVEL, questa routine acquisisce il blocco senza modificare il runtime di integrazione corrente. Per un driver in esecuzione in IRQL = DISPATCH_LEVEL, questa routine migliora le prestazioni acquisendo il blocco senza prima impostare IRQL su DISPATCH_LEVEL, che in questo caso sarebbe un'operazione ridondante.

Come i normali blocchi di rotazione, i blocchi di rotazione in coda devono essere usati solo in circostanze molto speciali. Per una descrizione di quando usare i blocchi di selezione, vedere KeAcquireSpinLock.

I driver non devono combinare chiamate a KeAcquireSpinLock e KeAcquireInStackQueuedSpinLock nello stesso blocco spin. Un blocco di rotazione deve essere sempre acquisito o rilasciato come blocco di rotazione in coda o come blocco di rotazione normale.

Requisiti

Requisito Valore
Client minimo supportato Windows XP
Intestazione wdm.h
IRQL IRQL >= DISPATCH_LEVEL
Regole di conformità DDI HwStorPortProhibitedDDIs(storport)

Vedi anche

KLOCK_QUEUE_HANDLE

KeAcquireSpinLock

KeAcquireInStackQueuedSpinLock

KeInitializeSpinLock

KeReleaseInStackQueuedSpinLockFromDpcLevel