ExAcquireSharedStarveExclusive 函式 (wdm.h)
ExAcquireSharedStarveExclusive 例程會取得指定的共用存取資源,而不會等待任何暫止嘗試取得相同資源的獨佔存取權。
語法
BOOLEAN ExAcquireSharedStarveExclusive(
[in, out] PERESOURCE Resource,
[in] BOOLEAN Wait
);
參數
[in, out] Resource
要取得以供共用存取之資源的指標。
[in] Wait
指定每當無法立即取得資源時,例程的行為。 如果 TRUE,則呼叫端會進入等候狀態,直到可以取得資源為止。 如果 FALSE,則不論是否可以取得資源,例程都會立即傳回。
傳回值
如果已授與要求存取權,ExAcquireSharedStarveExclusive 會傳回 TRUE。 如果輸入 WaitFALSE 且無法立即授與共用存取權,此例程會傳回 FALSE。
言論
呼叫端是否獲得指定資源的共用存取權取決於下列專案:
- 如果資源目前未擁有,則會立即將共用存取權授與目前的線程。
- 如果呼叫端已經取得資源(用於共用或獨佔存取權),則目前的線程會以遞歸方式授與相同類型的存取權。 請注意,進行此呼叫並不會將呼叫端對指定資源的獨佔存取轉換為共用存取。
- 如果資源目前由另一個線程所擁有,則共用存取權會立即授與給呼叫端,即使另一個線程正在等候該資源的獨佔存取權也一樣。
- 如果資源目前屬於另一個線程的獨佔,則呼叫端會進入等候狀態(Wait 設為 TRUE),或 ExAcquireSharedStarveExclusive 傳回 FALSE。
呼叫此例程之前,必須先停用一般核心 APC 傳遞。 呼叫 KeEnterCriticalRegion來停用一般核心 APC 傳遞。 傳遞必須保持停用,直到資源發行為止,此時可以藉由呼叫 KeLeaveCriticalRegion重新啟用。 如需詳細資訊,請參閱 停用 APC。
呼叫端可以呼叫 ExReleaseResourceLite 或 ExReleaseResourceForThreadLite來釋放資源。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 從 Windows 2000 開始提供。 |
目標平臺 | 普遍 |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
DDI 合規性規則 | HwStorPortProhibitedDIS(storport),IrqlExApcLte3(wdm),WithinCriticalRegion(storport),WithinCriticalRegion(storport),WithinCriticalRegion(wdm) |
另請參閱
ExAcquireSharedWaitForExclusive
ExConvertExclusiveToSharedLite