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