ExAcquireSharedStarveExclusive 函数 (wdm.h)
ExAcquireSharedStarveExclusive 例程获取给定资源进行共享访问,而无需等待任何挂起的尝试获取对同一资源的独占访问权限。
语法
BOOLEAN ExAcquireSharedStarveExclusive(
[in, out] PERESOURCE Resource,
[in] BOOLEAN Wait
);
参数
[in, out] Resource
指向要获取用于共享访问的资源的指针。
[in] Wait
指定每当无法立即获取资源时例程的行为。 如果 为 TRUE,则调用方将进入等待状态,直到可以获取资源。 如果 为 FALSE,则无论是否可以获取资源,例程都会立即返回。
返回值
如果授予请求的访问权限,ExAcquireSharedStarveExclusive 返回 TRUE。 如果输入 Wait 为 FALSE 且无法立即授予共享访问权限,则此例程返回 FALSE。
注解
是否向调用方授予对给定资源的共享访问权限取决于以下内容:
- 如果资源当前未拥有,则会立即向当前线程授予共享访问权限。
- 如果调用方已获取共享或独占访问) 的资源 (,则以递归方式向当前线程授予相同类型的访问权限。 请注意,进行此调用不会将调用方对给定资源的独占访问权限转换为共享访问。
- 如果资源当前由另一个线程共享,则会立即向调用方授予共享访问权限,即使另一个线程正在等待对该资源的独占访问权限也是如此。
- 如果资源当前由另一个线程独占,则调用方将进入等待状态, (Wait 设置为 TRUE) 或 ExAcquireSharedStarveExclusive 返回 FALSE。
在调用此例程之前,必须禁用正常的内核 APC 传递。 通过调用 KeEnterCriticalRegion 禁用正常的内核 APC 传递。 在释放资源之前,传递必须保持禁用状态,此时可以通过调用 KeLeaveCriticalRegion 重新启用它。 有关详细信息,请参阅 禁用 APC。
调用方可以通过调用 ExReleaseResourceLite 或 ExReleaseResourceForThreadLite 释放资源。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 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) |
另请参阅
ExAcquireSharedWaitForExclusive
ExConvertExclusiveToSharedLite