ExAcquireResourceSharedLite routine
2016-02-05 14:00
579 查看
ExAcquireResourceSharedLite routine
ExAcquireResourceSharedLite 获取一个给定的资源以用于给调用者线程共享访问。Syntax
BOOLEAN ExAcquireResourceSharedLite( _Inout_ PERESOURCE Resource, _In_ BOOLEAN Wait );
Parameters
Resource [in, out]指向需要获取的资源。
Wait [in]
当资源不能被立即获取时,指定例程的行为。如为 TRUE,调用者进入等待状态直到资源能被获取,否则例程直接返回,无视资源能否被获取。
Return value
调用者可以通过调用ExReleaseResourceLite 或 ExReleaseResourceForThreadLite之一释放资源。ExAcquireResourceSharedLite 返回TRUE 如果(或者当)资源获取到时。例程返回FALSE 如果输入的参数 Wait 是 FALSE 并且共享访问权限无法被立即授予时。
Remarks
是否(何时)调用者被授予共享访问取决于以下条件:·
若资源当前未被(线程)拥有,共享访问权限立即被授予给当前线程。
·
如果调用者已经获取到了资源(共享或者独占访问),当前线程被(递归地?)授予同类型的访问权限。注意调用这个函数并不会转换一个独占式的访问权限为共享式的访问权限。
·
如果资源当前被其他线程共享式拥有,并且没有其他线程正在等待对这个资源进行一个独占式的访问。共享访问权限被立即授予调用者。如果有一个独占式的线程在等待,那么调用者进入等待状态。
·
如果当前资源被其他一个线程独占式拥有,或者是当前有另外一个线程在等待独占式访问这个资源并且调用者并且调用者尚未获取共享式的访问权限,那么当前进程也将进入一个等待状态(Wait 设置为TRUE),或者orExAcquireResourceSharedLite 返回FALSE。
·
调用这个例程之前普通的内核APC投递必须被禁用。通过调用KeEnterCriticalRegion禁用普通内核APC的投递。直到这个资源已经释放之前投递必须保持被禁止的状态,资源释放后在APC投递可以通过调用KeLeaveCriticalRegion重新启用. 更多信息详见 Disabling APCs.
Requirements
Target platform | Universal |
Version | Available starting with Windows 2000. |
Header | Wdm.h (include Wdm.h, Ntddk.h, or Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
DDI compliance rules | IrqlExApcLte3, WithinCriticalRegion, HwStorPortProhibitedDDIs, WithinCriticalRegion(storport) |
See also
ExAcquireResourceExclusiveLiteExAcquireSharedStarveExclusive
ExAcquireSharedWaitForExclusive
ExConvertExclusiveToSharedLite
ExGetExclusiveWaiterCount
ExGetSharedWaiterCount
ExInitializeResourceLite
ExReinitializeResourceLite
ExIsResourceAcquiredSharedLite
ExReleaseResourceForThreadLite
相关文章推荐
- Zoho Recruit -求职者审批表
- Solr DocValues详解
- iOS7系统中的坑——UITableViewCellScrollView
- 使用Hibernate时出现“could not execute query”异常
- iOS开发——UILabel自适应较多的文本
- iOS9 升级后UIAlertController的简单使用
- iOS之UIView加边框及边框颜色
- 移动开发中使用Onsen UI的笔记
- iOS UIWeb与JS之间的交互
- DICOM:DICOM开源库多线程分析之“ThreadPoolQueue in fo-dicom”
- iOS开发技巧之扩展UIColor,支持十六进制颜色设置
- Item 21: 比起直接使用new优先使用std::make_unique和std::make_shared
- Item 18: 使用srd::unique_ptr来管理独占所有权的资源
- EasyUi图标
- 从request获取各种路径总结
- ToStringBuilder学习(三):readResolve()方法与序列化
- swing入门教程(五) swing其他重要概念
- pyqt实现CSDN博客访客数编程自动化增加GUI
- pyqt实现CSDN博客访客数编程自动化增加GUI
- ToStringBuilder学习(二):两种方法用法优缺点及一个问题