共用方式為


ExAcquireResourceExclusiveLite 函式 (wdm.h)

ExAcquireResourceExclusiveLite 例程會取得呼叫線程的指定資源供獨佔存取。

語法

BOOLEAN ExAcquireResourceExclusiveLite(
  [in, out] PERESOURCE Resource,
  [in]      BOOLEAN    Wait
);

參數

[in, out] Resource

要取得之資源的指標。

[in] Wait

指定每當無法立即取得資源時,例程的行為。 如果 TRUE,則呼叫端會進入等候狀態,直到可以取得資源為止。 如果 FALSE,則不論是否可以取得資源,例程都會立即傳回。

傳回值

如果取得資源,ExAcquireResourceExclusiveLite 會傳回 TRUE。 如果輸入 WaitFALSE 且無法立即授與獨佔存取權,此例程會傳回 FALSE

言論

下列清單描述呼叫端是否和何時獲得指定資源的獨佔存取權:

  • 如果資源目前未擁有,則會立即將獨佔存取權授與目前的線程。

  • 如果呼叫端已經取得資源進行獨佔存取,則目前的線程會以遞歸方式授與相同類型的存取權。

  • 如果呼叫端具有資源的共用存取權,呼叫端必須先釋放鎖定,才能嘗試以獨佔方式重新取得鎖定。

  • 如果資源目前由另一個線程所擁有,或呼叫端只擁有資源的共用存取權,則目前的線程會進入等候狀態,直到取得資源為止。

如果兩個線程各保留相同資源的共享鎖定,而且兩者都嘗試獨佔取得鎖定,而不會釋放其共用鎖定,它們就會死結。 這表示每個線程都會等待另一個線程釋放其鎖定上的共用保留,而且兩者都不會釋放其共用保留,直到另一個線程為止。

呼叫端可以呼叫 ExReleaseResourceLiteExReleaseResourceForThreadLite來釋放資源。

呼叫此例程之前,必須先停用一般核心 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)

另請參閱

ExAcquireResourceSharedLite

ExGetExclusiveWaiterCount

ExGetSharedWaiterCount

ExInitializeResourceLite

ExIsResourceAcquiredExclusiveLite

ExReinitializeResourceLite

ExReleaseResourceForThreadLite

ExReleaseResourceLite

KeEnterCriticalRegion

KeLeaveCriticalRegion