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

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

Синтаксис

void ExAcquirePushLockExclusive(
   Lock
);

Параметры

Lock

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

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

None

Remarks

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

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

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

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

Вызывающий объект является обязательным вызовом KeEnterCriticalRegion перед вызовом ExAcquirePushLockExclusive.

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

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

Требования

   
Минимальная версия клиента Windows 10, версия 1809
Заголовок wdm.h

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

ExInitializePushLock

KeEnterCriticalRegion

ExReleasePushLockExclusive

ExAcquirePushLockShared