Freigeben über


KeAcquireSpinLockAtDpcLevel-Makro (wdm.h)

Die KeAcquireSpinLockAtDpcLevel Routine ruft eine Drehsperre ab, wenn der Aufrufer bereits bei IRQL >= DISPATCH_LEVEL ausgeführt wird.

Syntax

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

Parameter

[in, out] SpinLock

Zeiger auf eine initialisierte KSPIN_LOCK Drehsperre, für die der Aufrufer den Speicher bereitstellen muss. Die Drehsperre muss aus einem nicht ausgelagerten Pool stammen.

Rückgabewert

Nichts

Bemerkungen

Treiber rufen KeAcquireSpinLockAtDpcLevel anstelle von KeAcquireSpinLock- für eine bessere Treiberleistung auf, wenn sie bereits bei einer IRQL von DISPATCH_LEVEL oder höher ausgeführt werden.

Wenn ein Treiber bei IRQL <= APC_LEVEL ausgeführt wird, sollte er KeAcquireSpinLock- aufrufen, damit IRQL von dieser Routine ausgelöst wird. KeAcquireSpinLockAtDpcLevel davon aus, dass der Aufrufer bereits bei IRQL >= DISPATCH_LEVEL ausgeführt wird, sodass keine Raise erforderlich ist.

Der Aufrufer sollte die Drehsperre mit KeReleaseSpinLockFromDpcLevel so schnell wie möglich freigeben.

Weitere Informationen zu Drehsperren finden Sie unter Spin Locks.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- Siehe Abschnitt "Hinweise".
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), IrqlDispatch(storport), SpinLockSafe(storport)

Siehe auch

KeAcquireInStackQueuedSpinLockAtDpcLevel

KeAcquireSpinLock

KeInitializeSpinLock

KeReleaseSpinLock

KeReleaseSpinLockFromDpcLevel

KeTryToAcquireSpinLockAtDpcLevel