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

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

Синтаксис

VOID FLTAPI FltAcquirePushLockSharedEx(
  PEX_PUSH_LOCK PushLock,
  ULONG         Flags
);

Параметры

PushLock

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

Flags

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

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

Нет.

Remarks

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

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

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

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

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

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

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

Требования

Требование Значение
Заголовок fltkernel.h
Библиотека FltMgr.lib

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

FltInitializePushLock