Макрос 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) |