Поделиться через


Макрос KeAcquireSpinLockAtDpcLevel (wdm.h)

Подпрограмма KeAcquireSpinLockAtDpcLevel получает блокировку спина, когда вызывающий объект уже работает в IRQL >= DISPATCH_LEVEL.

Синтаксис

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

Параметры

[in, out] SpinLock

Указатель на инициализированную KSPIN_LOCK блокировку спина, для которой вызывающий объект должен предоставить хранилище. Блокировка спина должна быть из нестраничного пула.

Возвращаемое значение

Никакой

Замечания

Драйверы вызывают KeAcquireSpinLockAtDpcLevel вместо KeAcquireSpinLock для повышения производительности драйвера, если и только если они уже работают в IRQL DISPATCH_LEVEL или более поздней версии.

Если драйвер работает в IRQL <= APC_LEVEL, он должен вызывать KeAcquireSpinLock, чтобы irQL был вызван этой подпрограммой. KeAcquireSpinLockAtDpcLevel предполагает, что вызывающий объект уже работает в IRQL >= DISPATCH_LEVEL, поэтому нет необходимости.

Вызывающий объект должен освободить блокировку спина с KeReleaseSpinLockFromDpcLevel как можно быстрее.

Дополнительные сведения о блокировках спина см. в разделе Spin Locks.

Требования

Требование Ценность
целевая платформа Всеобщий
заголовка wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL См. раздел "Примечания".
правил соответствия DDI HwStorPortProhibitedDIs(storport), IrqlDispatch(storport), SpinLockSafe(storport)

См. также

KeAcquireInStackQueuedSpinLockAtDpcLevel

KeAcquireSpinLock

KeInitializeSpinLock

KeReleaseSpinLock

KeReleaseSpinLockFromDpcLevel

KeTryToAcquireSpinLockAtDpcLevel