Edit

Share via


KefAcquireSpinLockAtDpcLevel function (wdm.h)

The KefAcquireSpinLockAtDpcLevel routine acquires a spin lock when the caller is already running at IRQL >= DISPATCH_LEVEL.

Syntax

VOID KefAcquireSpinLockAtDpcLevel(
  PKSPIN_LOCK SpinLock
);

Parameters

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 KefAcquireSpinLockAtDpcLevel 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. KefAcquireSpinLockAtDpcLevel assumes the caller is already running at IRQL >= DISPATCH_LEVEL, so no raise is necessary.

The caller should release the spin lock with KefReleaseSpinLockFromDpcLevel 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 DISPATCH_LEVEL
DDI compliance rules HwStorPortProhibitedDDIs(storport), IrqlDispatch(wdm), SpinLock(wdm), SpinlockRelease(wdm)

See also