Функция FltAcquirePushLockSharedEx (fltkernel.h)

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

Синтаксис

VOID FLTAPI FltAcquirePushLockSharedEx(
  PEX_PUSH_LOCK PushLock,
  ULONG         Flags
);

Параметры

PushLock

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

Flags

Битовая маска флагов, управляющих атрибутами блокировки.

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

Никакой.

Замечания

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

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

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

Когда вызывающий объект получит общий доступ к заданной блокировке push-уведомлений, зависит от следующего:

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

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

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

Требования

Требование Ценность
заголовка fltkernel.h
библиотеки FltMgr.lib

См. также

FltInitializePushLock