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

ExclusiveResourceAccessIrqlExApcLte3WithinCriticalRegionHwStorPortProhibitedDDIs,WithinCriticalRegion(storport)

See also

ExAcquireResourceSharedLite

ExGetExclusiveWaiterCount

ExGetSharedWaiterCount

ExInitializeResourceLite

ExReinitializeResourceLite

ExIsResourceAcquiredExclusiveLite

ExReleaseResourceForThreadLite

KeEnterCriticalRegion

0 0