Condividi tramite


Macro KeAcquireSpinLockAtDpcLevel (wdm.h)

La routine KeAcquireSpinLockAtDpcLevel acquisisce un blocco di selezione quando il chiamante è già in esecuzione in IRQL >= DISPATCH_LEVEL.

Sintassi

void KeAcquireSpinLockAtDpcLevel(
  [in, out] PKSPIN_LOCK SpinLock
);

Parametri

[in, out] SpinLock

Puntatore a un blocco di selezione KSPIN_LOCK inizializzato per il quale il chiamante deve fornire l'archiviazione. Il blocco di selezione deve trovarsi da un pool non di paging.

Valore restituito

Nessuno

Osservazioni

I driver chiamano KeAcquireSpinLockAtDpcLevel anziché KeAcquireSpinLock per migliorare le prestazioni del driver se e solo se sono già in esecuzione in un runtime di integrazione di DISPATCH_LEVEL o superiore.

Se un driver è in esecuzione in IRQL <= APC_LEVEL, deve chiamare KeAcquireSpinLock per fare in modo che IRQL venga generato da tale routine. KeAcquireSpinLockAtDpcLevel presuppone che il chiamante sia già in esecuzione in IRQL >= DISPATCH_LEVEL, quindi non è necessario generare alcuna generazione.

Il chiamante deve rilasciare il blocco spin con KeReleaseSpinLockFromDpcLevel il più rapidamente possibile.

Per altre informazioni sui blocchi di selezione, vedere Spin Locks.

Fabbisogno

Requisito Valore
piattaforma di destinazione Universale
intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
libreria NtosKrnl.lib
dll NtosKrnl.exe
IRQL Vedere la sezione Osservazioni.
regole di conformità DDI HwStorPortProhibitedDDDIs(storport), IrqlDispatch(storport), SpinLockSafe(storport)

Vedere anche

KeAcquireInStackQueuedSpinLockAtDpcLevel

KeAcquireSpinLock

KeInitializeSpinLock

KeReleaseSpinLock

KeReleaseSpinLockFromDpcLevel

KeTryToAcquireSpinLockAtDpcLevel