Функция KeAcquireInStackQueuedSpinLock (wdm.h)
Подпрограмма KeAcquireInStackQueuedSpinLock получает очередь блокировки очереди.
Синтаксис
void KeAcquireInStackQueuedSpinLock(
PKSPIN_LOCK SpinLock,
PKLOCK_QUEUE_HANDLE LockHandle
);
Параметры
SpinLock
[вход, выход] Указывает блокировку спина для получения. Этот параметр должен быть инициализирован с помощью KeInitializeSpinLock.
LockHandle
[out] Указатель на предоставленную вызывающим KLOCK_QUEUE_HANDLE переменную, которую подпрограмма может использовать для возврата дескриптора очереди спин-блокировки. Вызывающий объект передает это значение в KeReleaseInStackQueuedSpinLock при освобождении блокировки. Как правило, драйверы должны выделять структуру в стеке каждый раз, когда они получают блокировку. Драйвер не должен использовать один и тот же KLOCK_QUEUE_HANDLE с нескольких вызывающих сайтов.
Возвращаемое значение
None
Remarks
KeAcquireInStackQueuedSpinLock получает спиновую блокировку в виде очереди. Дополнительные сведения см. в разделе Очереди спиновых блокировок. Вызывающий объект освобождает спин-блокировку, вызывая подпрограмму KeReleaseInStackQueuedSpinLock .
Как и обычные спин-блокировки, очереди спин-блокировки должны использоваться только в особых обстоятельствах. Описание использования спин-блокировок см. в разделе KeAcquireSpinLock.
Эта процедура повышает уровень IRQL до DISPATCH_LEVEL при получении спин-блокировки. Если вызывающий объект гарантированно уже работает в DISPATCH_LEVEL, эффективнее вызвать KeAcquireInStackQueuedSpinLockAtDpcLevel.
Вызов KeReleaseInStackQueuedSpinLock , который освобождает спиновую блокировку, должен происходить в IRQL = DISPATCH_LEVEL. Этот вызов восстанавливает исходный IRQL, сохраненный операционной системой в начале вызова KeAcquireInStackQueuedSpinLock .
Драйверы не должны сочетать вызовы KeAcquireSpinLock и KeAcquireInStackQueuedSpinLock в одной и той же спин-блокировке. Спин-блокировка всегда должна быть получена или освобождена в виде очереди или как обычная спиновая блокировка.
Требования
Требование | Значение |
---|---|
Заголовок | wdm.h (включая Wdm.h) |
IRQL | IRQL <= DISPATCH_LEVEL |
Правила соответствия DDI | HwStorPortProhibitedDIs(storport), MarkingQueuedIrps(wdm), QueuedSpinLock(storport), QueuedSpinLock(wdm), QueuedSpinLockRelease(storport), QueuedSpinLockRelease(wdm) |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по