Funzione KeAcquireInStackQueuedSpinLock (wdm.h)
La routine KeAcquireInStackQueuedSpinLock acquisisce un blocco di selezione in coda.
Sintassi
void KeAcquireInStackQueuedSpinLock(
PKSPIN_LOCK SpinLock,
PKLOCK_QUEUE_HANDLE LockHandle
);
Parametri
SpinLock
[in, out] Specifica il blocco di rotazione da acquisire. Questo parametro deve essere stato inizializzato con KeInitializeSpinLock.
LockHandle
[out] Puntatore a una variabile fornita dal chiamante KLOCK_QUEUE_HANDLE che la routine può usare per restituire l'handle della coda di blocco di rotazione. Il chiamante passa questo valore a KeReleaseInStackQueuedSpinLock durante il rilascio del blocco. I driver devono in genere allocare la struttura nello stack ogni volta che acquisiscono il blocco. Un driver non deve usare lo stesso KLOCK_QUEUE_HANDLE da più siti chiamante.
Valore restituito
nessuno
Osservazioni
KeAcquireInStackQueuedSpinLock acquisisce un blocco spin come blocco spin in coda. Per altre informazioni, vedere Blocchi di selezione in coda. Il chiamante rilascia il blocco spin chiamando la routine KeReleaseInStackQueuedSpinLock .
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.
Questa routine aumenta il livello IRQL per DISPATCH_LEVEL durante l'acquisizione del blocco di selezione. Se il chiamante è già in esecuzione in DISPATCH_LEVEL, è più efficiente chiamare KeAcquireInStackQueuedSpinLockAtDpcLevel.
La chiamata a KeReleaseInStackQueuedSpinLock che rilascia il blocco di selezione deve verificarsi in IRQL = DISPATCH_LEVEL. Questa chiamata ripristina il runtime di integrazione originale salvato dal sistema operativo all'inizio della chiamata KeAcquireInStackQueuedSpinLock .
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 |
---|---|
Intestazione | wdm.h (include Wdm.h) |
IRQL | IRQL <= DISPATCH_LEVEL |
Regole di conformità DDI | HwStorPortProhibitedDDDIs(storport), MarkingQueuedIrps(wdm), QueuedSpinLock(storport), QueuedSpinLock(wdm), QueuedSpinLockRelease(storport), QueuedSpinLockRelease(wdm) |
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per