ExAcquireResourceExclusiveLite 函数 (wdm.h)
ExAcquireResourceExclusiveLite 例程获取由调用线程进行独占访问的给定资源。
语法
BOOLEAN ExAcquireResourceExclusiveLite(
[in, out] PERESOURCE Resource,
[in] BOOLEAN Wait
);
参数
[in, out] Resource
指向要获取的资源的指针。
[in] Wait
指定每当无法立即获取资源时例程的行为。 如果 TRUE,则调用方将进入等待状态,直到获取资源。 如果 FALSE,则无论是否可以获取资源,例程都会立即返回。
返回值
ExAcquireResourceExclusiveLite 如果获取资源,则返回 TRUE。 如果输入 WaitFALSE 且无法立即授予独占访问权限,则此例程将返回 FALSE。
言论
以下列表描述了调用方是否以及何时获得对给定资源的独占访问权限:
如果资源当前未拥有,则会立即向当前线程授予独占访问权限。
如果调用方已获取资源进行独占访问,则以递归方式向当前线程授予相同类型的访问。
如果调用方具有对资源的共享访问权限,则调用方必须先释放锁,然后才能尝试以独占方式重新获取该锁。
如果资源当前属于另一个线程的独占,或者调用方仅具有对资源的共享访问权限,则当前线程将处于等待状态,直到获取资源。
如果两个线程分别在同一资源上持有共享锁,并且两个线程都尝试以独占方式获取锁而不释放其共享锁,则它们将死锁。 这意味着,每个线程将等待另一个线程释放其共享保留锁定,并且两者都不会释放其共享保留,直到另一个线程释放。
调用方可以通过调用 ExReleaseResourceLite 或 ExReleaseResourceForThreadLite释放资源。
在调用此例程之前,必须禁用正常的内核 APC 传递。 通过调用 KeEnterCriticalRegion禁用正常的内核 APC 传递。 在释放资源之前,传递必须保持禁用状态,此时可以通过调用 KeLeaveCriticalRegion重新启用它。 有关详细信息,请参阅 禁用 APC。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <= APC_LEVEL |
DDI 符合性规则 | ExclusiveResourceAccess(wdm),HwStorPortProhibitedDIS(storport),IrqlExApcLte3()() wdm),WithinCriticalRegion(storport),WithinCriticalRegion(storport),WithinCriticalRegion(wdm) |
另请参阅
ExIsResourceAcquiredExclusiveLite