FltAcquireResourceExclusive 函式 (fltkernel.h)
FltAcquireResourceExclusive 例程會取得呼叫線程的指定資源供獨佔存取。
語法
VOID FLTAPI FltAcquireResourceExclusive(
[in/out] PERESOURCE Resource
);
參數
[in/out] Resource
不透明 ERESOURCE 結構的指標。 這個結構必須由來自非分頁集區的呼叫者配置,並藉由 呼叫 exInitializeResourceLite 或 ExReinitializeResourceLite初始化。
傳回值
沒有
言論
FltAcquireResourceExclusive 會取得呼叫線程的指定資源進行獨佔存取。
下列情況會判斷呼叫端是否具有指定資源的獨佔存取權:
如果資源目前未擁有,則會立即將獨佔存取權授與目前的線程。
如果呼叫端已經取得資源進行獨佔存取,則目前的線程會以遞歸方式授與相同類型的存取權。
具有資源分享存取權的呼叫端必須釋放鎖定,然後以獨佔方式重新取得鎖定。
如果資源目前由另一個線程所擁有,或呼叫端只擁有資源的共用存取權,則目前的線程會進入等候狀態,直到取得資源為止。
如果兩個線程各保留相同資源的共享鎖定,而且兩者都嘗試獨佔取得鎖定,而不會釋放其共用鎖定,它們就會死結。 這表示每個線程都會等待另一個線程釋放其鎖定上的共用保留,而且兩者都不會釋放其共用保留,直到另一個線程為止。
FltAcquireResourceExclusive 是停用一般核心 APC 傳遞的 ExAcquireResourceExclusiveLite 包裝函式。
由於 FltAcquireResourceExclusive 會停用一般核心 APC 傳遞,因此不需要呼叫 KeEnterCriticalRegion 或 FsRtlEnterFileSystem,再呼叫 FltAcquireResourceExclusive。
若要在取得資源之後釋放資源,請呼叫 FltReleaseResource。 FltAcquireResourceExclusive 的每個成功呼叫,都必須與後續呼叫 fltReleaseResource 相符。
若要取得共用存取的資源,請呼叫 FltAcquireResourceShared。
若要從系統的資源清單中刪除資源,請呼叫 ExDeleteResourceLite。
若要初始化資源以供重複使用,請呼叫 ExReinitializeResourceLite。
如需ERESOURCE結構的詳細資訊,請參閱 ERESOURCE 例程簡介。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows XP SP2 |
支援的最低伺服器 | Windows Server 2003 SP1 |
標頭 | fltkernel.h |
連結庫 | FltMgr.lib |
IRQL | IRQL <= APC_LEVEL |