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


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

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

Синтаксис

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

Параметры

[in, out] SpinLock

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

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

None

Remarks

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

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

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

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

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть wdm.h (включая 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