exAcquireResourceSharedLite 函数 (wdm.h)

ExAcquireResourceSharedLite 例程获取给定资源,以便由调用线程进行共享访问。

语法

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

参数

[in, out] Resource

指向要获取的资源的指针。

[in] Wait

指定每当无法立即获取资源时例程的行为。 如果 为 TRUE,则调用方将进入等待状态,直到可以获取资源。 如果 为 FALSE,则无论是否可以获取资源,例程都会立即返回。

返回值

调用方可以通过调用 ExReleaseResourceLiteExReleaseResourceForThreadLite 释放资源

如果 (或获取资源 ) ,ExAcquireResourceSharedLite 将返回 TRUE。 如果输入 WaitFALSE 且无法立即授予共享访问权限,则此例程返回 FALSE

注解

是否向调用方授予对给定资源的共享访问权限取决于以下内容:

  • 如果资源当前未拥有,则会立即向当前线程授予共享访问权限。

  • 如果调用方已获取共享或独占访问) 的资源 (,则以递归方式向当前线程授予相同类型的访问权限。 请注意,进行此调用不会将调用方对给定资源的独占访问权限转换为共享访问。

  • 如果资源当前由另一个线程共享,并且没有线程正在等待对资源的独占访问,则会立即向调用方授予共享访问权限。 如果存在独占服务员,则调用方将进入等待状态。

  • 如果资源当前由另一个线程作为独占拥有,或者有另一个线程在等待独占访问,并且调用方尚未对资源具有共享访问权限,则当前线程将进入等待状态, (Wait 设置为 TRUE) 或 ExAcquireResourceSharedLite 返回 FALSE

在调用此例程之前,必须禁用正常的内核 APC 传递。 通过调用 KeEnterCriticalRegion 禁用正常的内核 APC 传递。 在释放资源之前,传递必须保持禁用状态,此时可以通过调用 KeLeaveCriticalRegion 重新启用它。 有关详细信息,请参阅 禁用 APC

要求

要求
最低受支持的客户端 从 Windows 2000 开始可用。
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI (storport) IrqlExApcLte3 (wdm) InCriticalRegion (storport) , WithinCriticalRegion (storport) , WithinCriticalRegion (wdm)

另请参阅

ExAcquireResourceExclusiveLite

ExAcquireSharedStarveExclusive

ExAcquireSharedWaitForExclusive

ExConvertExclusiveToSharedLite

ExGetExclusiveWaiterCount

ExGetSharedWaiterCount

ExInitializeResourceLite

ExIsResourceAcquiredSharedLite

ExReinitializeResourceLite

ExReleaseResourceForThreadLite