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


Функция ExAcquireSpinLockShared (wdm.h)

Подпрограмма ExAcquireSpinLockShared получает спиновую блокировку для общего доступа вызывающего абонента и вызывает irQL для DISPATCH_LEVEL.

Синтаксис

KIRQL ExAcquireSpinLockShared(
  [in, out] PEX_SPIN_LOCK SpinLock
);

Параметры

[in, out] SpinLock

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

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

Подпрограмма ExAcquireSpinLockShared возвращает предыдущее значение IRQL. Дополнительные сведения см. в разделе Примечания.

Комментарии

При входе в эту подпрограмму вызывающий объект должен выполняться в irQL <= DISPATCH_LEVEL. Эта подпрограмма вызывает irQL для DISPATCH_LEVEL и возвращает исходное (в записи) значение IRQL.

Чтобы освободить спиновую блокировку, вызовите подпрограмму ExReleaseSpinLockShared . ExReleaseSpinLockShared восстанавливает irQL до исходного значения, которое было в записи в ExAcquireSpinLockShared.

Спин-блокировка — это 32-разрядная переменная типа EX_SPIN_LOCK. Драйвер должен выделить хранилище для спин-блокировки и инициализировать спин-блокировку до нуля. Это хранилище должно находиться в непагрегированных системных памяти.

Вызывающий объект должен удерживать спин-блокировку только ненадолго, прежде чем освободить ее. Дополнительные сведения см. в статье Введение в спиновые блокировки.

Рекурсивное получение спиновой блокировки вызывает взаимоблокировку и не допускается.

Требования

Требование Значение
Заголовок wdm.h
IRQL DISPATCH_LEVEL (см. примечания).)

См. также раздел

ExReleaseSpinLockShared