共用方式為


FltAcquireResourceExclusive 函式 (fltkernel.h)

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

語法

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

參數

[in/out] Resource

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

傳回值

沒有

言論

FltAcquireResourceExclusive 會取得呼叫線程的指定資源進行獨佔存取。

下列情況會判斷呼叫端是否具有指定資源的獨佔存取權:

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

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

  • 具有資源分享存取權的呼叫端必須釋放鎖定,然後以獨佔方式重新取得鎖定。

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

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

FltAcquireResourceExclusive 是停用一般核心 APC 傳遞的 ExAcquireResourceExclusiveLite 包裝函式。

由於 FltAcquireResourceExclusive 會停用一般核心 APC 傳遞,因此不需要呼叫 KeEnterCriticalRegionFsRtlEnterFileSystem,再呼叫 FltAcquireResourceExclusive

若要在取得資源之後釋放資源,請呼叫 FltReleaseResourceFltAcquireResourceExclusive 的每個成功呼叫,都必須與後續呼叫 fltReleaseResource 相符。

若要取得共用存取的資源,請呼叫 FltAcquireResourceShared

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

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

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

要求

要求 價值
最低支援的用戶端 Windows XP SP2
支援的最低伺服器 Windows Server 2003 SP1
標頭 fltkernel.h
連結庫 FltMgr.lib
IRQL IRQL <= APC_LEVEL