共用方式為


FltAcquireResourceShared 函式 (fltkernel.h)

FltAcquireResourceShared 例程會取得由呼叫線程進行共用存取的指定資源。

語法

VOID FLTAPI FltAcquireResourceShared(
  [in/out] PERESOURCE Resource
);

參數

[in/out] Resource

不透明 ERESOURCE 結構的指標。 這個結構必須由來自非分頁集區的呼叫端配置,並藉由呼叫 ExInitializeResourceLiteExReinitializeResourceLite 進行初始化。

傳回值

無。

備註

FltAcquireResourceShared 例程會取得指定的資源供呼叫線程進行共用存取。

呼叫端是否獲得指定資源的共用存取權取決於下列專案:

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

  • 如果呼叫端已經取得共享或獨佔存取) 的資源 (,則目前的線程會以遞歸方式授與相同的存取類型。 請注意,進行此呼叫並不會將指定資源的獨佔擁有權轉換為共用。

  • 如果資源目前是以另一個線程共用的方式擁有,而且沒有線程正在等候資源的獨佔存取權,則會立即將共用存取權授與給呼叫端。 如果有獨佔等候程式,呼叫端會進入等候狀態。

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

FltAcquireResourceSharedExAcquireResourceSharedLite 的包裝函式,可停用一般核心 APC 傳遞。

由於 FltAcquireResourceShared 會停用一般核心 APC 傳遞,因此在呼叫 FltAcquireResourceShared 之前,不需要呼叫 KeEnterCriticalRegionFsRtlEnterFileSystem

若要在取得資源之後釋放資源,請呼叫 FltReleaseResource。 每次成功呼叫 FltAcquireResourceShared 時,都必須符合 後續對 FltReleaseResource 的呼叫。

若要取得資源以進行獨佔存取,請呼叫 FltAcquireResourceExclusive

若要從系統的資源清單中刪除資源,請呼叫 ExDeleteResourceLite

若要初始化資源以供重複使用,請呼叫 ExReinitializeResourceLite

如需ERESOURCE結構的詳細資訊,請參閱 ERESOURCE例程簡介

規格需求

需求
最低支援的用戶端 Windows XP SP2
最低支援的伺服器 Windows Server 2003 SP1
標頭 fltkernel.h
程式庫 FltMgr.lib
IRQL IRQL <= APC_LEVEL