Функция 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 (см. примечания.) |