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 selezione da acquisire. Questo parametro deve essere stato inizializzato da una chiamata alla routine KeInitializeSpinLock.
LockHandle
[out] Puntatore a una struttura di KLOCK_QUEUE_HANDLE fornita dal chiamante che la routine può usare per restituire l'handle della coda di blocco di selezione. 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 spin accodato. Per altre informazioni, vedere blocchi spin accodati. Per rilasciare il blocco di selezione, chiamare la routineKeReleaseInStackQueuedSpinLockFromDpcLevel.
I driver già in esecuzione in un >IRQL = DISPATCH_LEVEL possono chiamare questa routine per acquisire più rapidamente il blocco spin 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 l'IRQL 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 di selezione. Un blocco spin deve essere sempre acquisito o rilasciato come blocco di rotazione in coda o come blocco di rotazione ordinario.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows XP |
intestazione | wdm.h |
IRQL | IRQL >= DISPATCH_LEVEL |
regole di conformità DDI | HwStorPortProhibitedDDIs(storport) |