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

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

Синтаксис

VOID FLTAPI FltAcquireResourceShared(
  [in/out] PERESOURCE Resource
);

Параметры

[in/out] Resource

Указатель на непрозрачную структуру ERESOURCE . Эта структура должна быть выделена вызывающим объектом из непагрегированного пула и инициализирована путем вызова ExInitializeResourceLite или ExReinitializeResourceLite.

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

Нет.

Remarks

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

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

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

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

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

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

FltAcquireResourceShared — это оболочка для ExAcquireResourceSharedLite , которая отключает обычную доставку ядра APC.

Так как FltAcquireResourceShared отключает обычную доставку APC ядра, нет необходимости вызывать KeEnterCriticalRegion или FsRtlEnterFileSystem перед вызовом FltAcquireResourceShared.

Чтобы освободить ресурс после его получения, вызовите FltReleaseResource. Каждый успешный вызов FltAcquireResourceShared должен соответствовать последующему вызову FltReleaseResource.

Чтобы получить ресурс для монопольного доступа, вызовите FltAcquireResourceExclusive.

Чтобы удалить ресурс из списка ресурсов системы, вызовите ExDeleteResourceLite.

Чтобы инициализировать ресурс для повторного использования, вызовите ExReinitializeResourceLite.

Дополнительные сведения о структурах ERESOURCE см. в статье Введение в подпрограммы ERESOURCE.

Требования

Требование Значение
Минимальная версия клиента Windows XP с пакетом обновления 2 (SP2)
Минимальная версия сервера Windows Server 2003 с пакетом обновления 1 (SP1)
Верхняя часть fltkernel.h
Библиотека FltMgr.lib
IRQL IRQL <= APC_LEVEL