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


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

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

Синтаксис

KIRQL ExAcquireSpinLockExclusive(
  PEX_SPIN_LOCK SpinLock
);

Параметры

SpinLock

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

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

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

Замечания

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

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

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

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

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

Требования

Требование Ценность
заголовка wdm.h
IRQL IRQL <= DISPATCH_LEVEL

См. также

ExReleaseSpinLockExclusive