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


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

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

Синтаксис

KIRQL ExAcquireSpinLockExclusive(
  PEX_SPIN_LOCK SpinLock
);

Параметры

SpinLock

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

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

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

Комментарии

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

Чтобы освободить спин-блокировку, вызовите подпрограмму ExReleaseSpinLockExclusive . ExReleaseSpinLockExclusive восстанавливает значение IRQL до исходного значения, которое было при входе в ExAcquireSpinLockExclusive.

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

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

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

Требования

Требование Значение
Заголовок wdm.h
IRQL IRQL <= DISPATCH_LEVEL

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

ExReleaseSpinLockExclusive