Share via


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

KLOCK_QUEUE_HANDLE

KeAcquireInStackQueuedSpinLockAtDpcLevel

KeAcquireSpinLock

KeInitializeSpinLock

KeReleaseInStackQueuedSpinLock