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


Макрос ExAcquirePushLockExclusive (wdm.h)

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

Синтаксис

void ExAcquirePushLockExclusive(
   Lock
);

Параметры

Lock

Непрозрачный указатель блокировки принудительной блокировки. Этот указатель должен быть инициализирован предыдущим вызовом ExInitializePushLock.

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

Никакой

Замечания

Блокировки push-уведомлений похожи на структуры ERESOURCE (также называемые ресурсами), в том, что они могут быть приобретены для общего или эксклюзивного доступа. Дополнительные сведения о push-блокировках см. в справочной записи для ExInitializePushLock.

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

  • Если блокировка принудительной передачи в настоящее время не защищена, монопольный доступ предоставляется немедленно текущему потоку.

  • Если блокировка принудительной передачи уже приобретена для эксклюзивного или общего доступа другим потоком, текущий поток помещается в состояние ожидания, пока блокировка принудительной передачи не будет получена.

Перед вызовом этой процедуры драйвер должен отключить обычную доставку APC ядра путем вызова KeEnterCriticalRegion. Повторная доставка после освобождения принудительной блокировки путем вызова KeLeaveCriticalRegion. Дополнительные сведения см. в разделе Отключение API.

Чтобы освободить блокировку push-уведомлений после получения, вызовите ExReleasePushLockExclusive. Каждый вызов ExAcquirePushLockExclusive должен соответствовать последующему вызову ExReleasePushLockExclusive.

Чтобы получить блокировку принудительной отправки для общего доступа, вызовите ExAcquirePushLockShared.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 10 версии 1809
заголовка wdm.h

См. также

ExInitializePushLock

KeEnterCriticalRegion

ExReleasePushLockExclusive

ExAcquirePushLockShared