KeAcquireSpinLockAtDpcLevel macro (wdm.h)
The KeAcquireSpinLockAtDpcLevel routine acquires a spin lock when the caller is already running at IRQL >= DISPATCH_LEVEL.
Syntax
void KeAcquireSpinLockAtDpcLevel(
[in, out] PKSPIN_LOCK SpinLock
);
Parameters
[in, out] SpinLock
Pointer to an initialized KSPIN_LOCK spin lock for which the caller must provide the storage. The spin lock must be from non-paged pool.
Return value
None
Remarks
Drivers call KeAcquireSpinLockAtDpcLevel instead of KeAcquireSpinLock for better driver performance if and only if they are already running at an IRQL of DISPATCH_LEVEL or above.
If a driver is running at IRQL <= APC_LEVEL, it should call KeAcquireSpinLock to have IRQL raised by that routine. KeAcquireSpinLockAtDpcLevel assumes the caller is already running at IRQL >= DISPATCH_LEVEL, so no raise is necessary.
The caller should release the spin lock with KeReleaseSpinLockFromDpcLevel as quickly as possible.
For more information about spin locks, see Spin Locks.
Requirements
Requirement | Value |
---|---|
Target Platform | Universal |
Header | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | See Remarks section. |
DDI compliance rules | HwStorPortProhibitedDDIs(storport), IrqlDispatch(storport), SpinLockSafe(storport) |