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


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

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

Синтаксис

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

Параметры

[in/out] Resource

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

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

Никакой.

Замечания

Подпрограмма 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