共用方式為


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
ExAcquireSharedStarveExclusive 的呼叫端通常需要快速存取共用資源,才能儲存獨佔存取子以執行備援工作。 例如,文件系統可能會呼叫此例程來修改快取的資源,例如快取中釘選的 BCB,然後快取管理員才能取得資源的獨佔存取權,並將快取寫出磁碟。

呼叫此例程之前,必須先停用一般核心 APC 傳遞。 呼叫 KeEnterCriticalRegion 以停用一般核心 APC 傳遞。 傳遞必須保持停用狀態,直到資源釋放為止,此時可藉由呼叫 KeLeaveCriticalRegion重新啟用。 如需詳細資訊,請參閱 停用 APC

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

規格需求

需求
最低支援的用戶端 從 Windows 2000 開始提供。
目標平台 Universal
標頭 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)

另請參閱

ExAcquireResourceSharedLite

ExAcquireSharedWaitForExclusive

ExConvertExclusiveToSharedLite

ExGetExclusiveWaiterCount

ExIsResourceAcquiredExclusiveLite

ExIsResourceAcquiredSharedLite