exAcquireResourceExclusiveLite 函式 (wdm.h)
ExAcquireResourceExclusiveLite 例程會取得指定的資源,供呼叫線程獨佔存取。
語法
BOOLEAN ExAcquireResourceExclusiveLite(
[in, out] PERESOURCE Resource,
[in] BOOLEAN Wait
);
參數
[in, out] Resource
要取得之資源的指標。
[in] Wait
指定每當無法立即取得資源時,例程的行為。 如果 為 TRUE,則呼叫端會進入等候狀態,直到取得資源為止。 如果 為 FALSE,則不論是否可以取得資源,例程都會立即傳回。
傳回值
如果取得資源,ExAcquireResourceExclusiveLite 會傳回 TRUE。 如果輸入 Wait 為 FALSE,且無法立即授與獨佔存取權,此例程會傳回 FALSE。
備註
下列清單描述呼叫端是否獲得指定資源的獨佔存取權和時機:
如果資源目前未擁有,則會立即將獨佔存取權授與目前線程。
如果呼叫端已經取得資源以供獨佔存取,則目前的線程會以遞歸方式授與相同類型的存取權。
如果呼叫端具有資源的共用存取權,呼叫端必須先釋放鎖定,才能嘗試獨佔重新取得鎖定。
如果資源目前由另一個線程所擁有,或呼叫端只擁有資源的共用存取權,則目前的線程會進入等候狀態,直到取得資源為止。
如果兩個線程分別在相同的資源上保存共享鎖定,而且兩者都嘗試獨佔取得鎖定,而不會釋放其共用鎖定,它們將會死結。 這表示每個線程都會等待另一個線程釋放其鎖定的共用保留,而且兩者都不會釋放其共用保留,直到另一個線程為止。
呼叫端可以呼叫 ExReleaseResourceLite 或 ExReleaseResourceForThreadLite 來釋放資源。
呼叫此例程之前,必須先停用一般核心 APC 傳遞。 呼叫 KeEnterCriticalRegion 以停用一般核心 APC 傳遞。 傳遞必須保持停用狀態,直到資源釋放為止,呼叫 KeLeaveCriticalRegion即可重新啟用它。 如需詳細資訊,請參閱 停用 APC。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | IRQL <= APC_LEVEL |
DDI 合規性規則 | ExclusiveResourceAccess (wdm) 、 HwStorPortProhibitedDDIs (storport ) 、 IrqlExApcLte3 (wdm) 、 WithinCriticalRegion (storport) 、WithinCriticalRegion (storport) 、WithinCriticalRegion (wdm) |
另請參閱
ExIsResourceAcquiredExclusiveLite