FltAcquireResourceShared 函式 (fltkernel.h)
FltAcquireResourceShared 例程會取得由呼叫線程進行共用存取的指定資源。
語法
VOID FLTAPI FltAcquireResourceShared(
[in/out] PERESOURCE Resource
);
參數
[in/out] Resource
不透明 ERESOURCE 結構的指標。 這個結構必須由來自非分頁集區的呼叫端配置,並藉由呼叫 ExInitializeResourceLite 或 ExReinitializeResourceLite 進行初始化。
傳回值
無。
備註
FltAcquireResourceShared 例程會取得指定的資源供呼叫線程進行共用存取。
呼叫端是否獲得指定資源的共用存取權取決於下列專案:
如果資源目前未擁有,則會立即將共用存取權授與目前線程。
如果呼叫端已經取得共享或獨佔存取) 的資源 (,則目前的線程會以遞歸方式授與相同的存取類型。 請注意,進行此呼叫並不會將指定資源的獨佔擁有權轉換為共用。
如果資源目前是以另一個線程共用的方式擁有,而且沒有線程正在等候資源的獨佔存取權,則會立即將共用存取權授與給呼叫端。 如果有獨佔等候程式,呼叫端會進入等候狀態。
如果資源目前由另一個線程擁有為獨佔,或有另一個線程正在等候獨佔存取,且呼叫端尚未擁有資源的共用存取權,則目前的線程會進入等候狀態,直到取得資源為止。
FltAcquireResourceShared 是 ExAcquireResourceSharedLite 的包裝函式,可停用一般核心 APC 傳遞。
由於 FltAcquireResourceShared 會停用一般核心 APC 傳遞,因此在呼叫 FltAcquireResourceShared 之前,不需要呼叫 KeEnterCriticalRegion 或 FsRtlEnterFileSystem。
若要在取得資源之後釋放資源,請呼叫 FltReleaseResource。 每次成功呼叫 FltAcquireResourceShared 時,都必須符合 後續對 FltReleaseResource 的呼叫。
若要取得資源以進行獨佔存取,請呼叫 FltAcquireResourceExclusive。
若要從系統的資源清單中刪除資源,請呼叫 ExDeleteResourceLite。
若要初始化資源以供重複使用,請呼叫 ExReinitializeResourceLite。
如需ERESOURCE結構的詳細資訊,請參閱 ERESOURCE例程簡介。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP SP2 |
最低支援的伺服器 | Windows Server 2003 SP1 |
標頭 | fltkernel.h |
程式庫 | FltMgr.lib |
IRQL | IRQL <= APC_LEVEL |