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


Функция ExAcquireResourceSharedLite (wdm.h)

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

Синтаксис

BOOLEAN ExAcquireResourceSharedLite(
  [in, out] PERESOURCE Resource,
  [in]      BOOLEAN    Wait
);

Параметры

[in, out] Resource

Указатель на ресурс, который требуется получить.

[in] Wait

Указывает поведение подпрограммы всякий раз, когда ресурс не может быть получен немедленно. Если значение РАВНО TRUE, вызывающий объект переводится в состояние ожидания, пока ресурс не будет получен. Если значение РАВНО FALSE, подпрограмма немедленно возвращается независимо от того, можно ли получить ресурс.

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

Вызывающий объект может освободить ресурс, вызвав ExReleaseResourceLite или ExReleaseResourceForThreadLite.

ExAcquireResourceSharedLite возвращает значение TRUE , если (или когда) ресурс получен. Эта подпрограмма возвращает значение FALSE , если входной параметр Wait имеет значение FALSE и общий доступ не может быть предоставлен немедленно.

Комментарии

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

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

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

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

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

Обычная доставка APC ядра должна быть отключена перед вызовом этой подпрограммы. Отключите обычную доставку APC ядра, вызвав KeEnterCriticalRegion. Доставка должна оставаться отключенной до тех пор, пока ресурс не будет освобожден. После этого его можно повторно включить, вызвав KeLeaveCriticalRegion. Дополнительные сведения см. в разделе Отключение APC.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 2000.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL
Правила соответствия DDI HwStorPortProhibitedDIs(storport), IrqlExApcLte3(wdm), WithinCriticalRegion(storport), WithinCriticalRegion(storport), WithinCriticalRegion(wdm)

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

ExAcquireResourceExclusiveLite

ExAcquireSharedStarveExclusive

ExAcquireSharedWaitForExclusive

ExConvertExclusiveToSharedLite

ExGetExclusiveWaiterCount

ExGetSharedWaiterCount

ExInitializeResourceLite

ExIsResourceAcquiredSharedLite

ExReinitializeResourceLite

ExReleaseResourceForThreadLite