KeAcquireSpinLockAtDpcLevel-Makro (wdm.h)

Die KeAcquireSpinLockAtDpcLevel-Routine ruft eine Drehsperre ab, wenn der Aufrufer bereits unter 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 Spinsperre muss aus einem Nicht-Auslagerungspool stammen.

Rückgabewert

Keine

Bemerkungen

Treiber rufen KeAcquireSpinLockAtDpcLevel anstelle von KeAcquireSpinLock auf, um die Treiberleistung zu verbessern, wenn sie bereits mit einem IRQL von DISPATCH_LEVEL oder höher ausgeführt werden.

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

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

Weitere Informationen zu Spinlocks finden Sie unter Spinlocks.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Weitere Informationen finden Sie im Abschnitt mit den Hinweisen.
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), IrqlDispatch(storport), SpinLockSafe(storport)

Weitere Informationen

KeAcquireInStackQueuedSpinLockAtDpcLevel

KeAcquireSpinLock

KeInitializeSpinLock

KeReleaseSpinLock

KeReleaseSpinLockFromDpcLevel

KeTryToAcquireSpinLockAtDpcLevel