ExAcquireResourceExclusiveLite routine
来源:互联网 发布:freecad python 编辑:程序博客网 时间:2024/05/13 00:49
ExAcquireResourceExclusiveLite routine
ExAcquireResourceExclusiveLite 获取线程对资源的独占访问权。
Syntax
BOOLEAN ExAcquireResourceExclusiveLite(
_Inout_ PERESOURCE Resource,
_In_ BOOLEAN Wait
);
Parameters
Resource [in, out]
指向一个需要获取的资源。
Wait [in]
当资源不能被立即获取时指定例程的行为. 如果为 TRUE, 调用者进入等待知道资源能被获取。如果FALSE,例程直接返回而无论资源能否被获取到。
Return value
ExAcquireResourceExclusiveLite 返回TRUE 如果资源被获取到,在Wait 被设置为FALSE 时且独占访问权无法被立即授予时,例程返回FALSE;
Remarks
接下来的列表阐述了是否、何时调用者能活到一个给定资源的独占访问权。
·
若资源当前未被任何线程拥有,独占访问被立即授予给当前线程。
·
若调用者已经获取到一个独占访问资源的授权,当前线程被递归地授予相同类型的访问权。
·
若调用者当前已经被授予了共享访问权,调用者必须在它重新获取独占访问权前释放共享访问权。
·
如果资源已经被其他线程独占拥有,又或者是调用者仅用于共享访问权,当前线程进入等待知道资源能被获取到。
·
Note 如果两个线程在同一个资源上都各自拥有一个共享锁,并且都试图在释放它们的锁之前获取一个资源独占访问权,辣么它们将进入死锁。这意味着每个线程都在等待另一个线程释放它们拥有的共享锁,并且两者都不在另一个线程释放共享锁之前释放自己的共享锁。
调用者可以通过调用ExReleaseResourceLite 、 ExReleaseResourceForThreadLite.
之一来释放资源;在调用这个例程之前,普通内核APC传递必须被禁用。禁用普通内核APC传递可以通过调用函数KeEnterCriticalRegion实施。内核APC的传递必须保持禁用知道资源被释放,在此之后才能调用KeLeaveCriticalRegion以重新启用APC的传递。更多信息详见: 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
ExclusiveResourceAccess, IrqlExApcLte3, WithinCriticalRegion, HwStorPortProhibitedDDIs,WithinCriticalRegion(storport)
See also
ExAcquireResourceSharedLite
ExGetExclusiveWaiterCount
ExGetSharedWaiterCount
ExInitializeResourceLite
ExReinitializeResourceLite
ExIsResourceAcquiredExclusiveLite
ExReleaseResourceForThreadLite
KeEnterCriticalRegion
- ExAcquireResourceExclusiveLite routine
- python routine
- RegistryCallback routine
- RegistryCallback routine
- ZwReadFile routine
- ZwWriteFile routine
- RtlFreeUnicodeString routine
- RtlUpcaseUnicodeString routine
- RtlAnsiStringToUnicodeSize routine
- RtlCompareUnicodeString routine
- RtlCopyUnicodeString routine
- RtlEqualUnicodeString routine
- MmGetSystemRoutineAddress routine
- ExInitializeResourceLite routine
- ExDeleteResourceLite routine
- ExAcquireResourceSharedLite routine
- KeEnterCriticalRegion routine
- KeLeaveCriticalRegion routine
- VS2013: Intellisense cannot open source file “*.h”
- unexpected inconstancy
- [Leetcode]152. Maximum Product Subarray @python
- poj1080 2010.2.20
- poj1325 2010.2.21
- ExAcquireResourceExclusiveLite routine
- JavaScript调用WebServices
- a
- HDU 找出直系亲属 (dfs+vector)
- hdoj--3488--Tour(KM)
- 说说JAVA I/O流的那些事
- Windows Server 2003 磁盘镜像卷实现双硬盘数据灾难备份 2012
- poj1469 2010.2.21