FltAcquirePushLockExclusive 函式 (fltkernel.h)

FltAcquirePushLockExclusive 宏會透過呼叫線程取得指定的推播鎖定,以進行獨佔存取。

語法

VOID FLTAPI FltAcquirePushLockExclusive(
  [in, out] PEX_PUSH_LOCK PushLock
);

參數

[in, out] PushLock

類型 為 PEX_PUSH_LOCK的不透明推播鎖定指標。 這個指標必須由先前呼叫 FltInitializePushLock 初始化。

傳回值

無。

備註

FltAcquirePushLockExclusive 會藉由呼叫線程取得指定的推播鎖定以進行獨佔存取。

推送鎖定類似於 ERESOURCE 結構, (也稱為資源) ,以便取得它們以進行共用或獨佔存取。 如需推播鎖定的詳細資訊,請參閱 FltInitializePushLock 的參考專案。

不同於ERESOURCE結構,推播鎖定無法以遞歸方式取得。 如果呼叫端已經取得獨佔或共用存取的推送鎖定,線程將會停止回應。

當呼叫端獲得指定推播鎖定的獨佔存取權時,取決於下列各項:

  • 如果推送鎖定目前未擁有,則會立即將獨佔存取權授與目前線程。

  • 如果已取得推播鎖定供另一個線程獨佔或共用存取,則目前的線程會進入等候狀態,直到取得推送鎖定為止。

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

若要在取得推送鎖定之後釋放,請呼叫 FltReleasePushLock。 每次呼叫 FltAcquirePushLockExclusive 都必須與 後續對 FltReleasePushLock 的呼叫進行比對。

若要取得共用存取的推送鎖定,請呼叫 FltAcquirePushLockShared

若要初始化推送鎖定,請呼叫 FltInitializePushLock

若要刪除推播鎖定,請呼叫 FltDeletePushLock

規格需求

需求
目標平台 Universal
標頭 fltkernel.h (包含 Fltkernel.h)
程式庫 FltMgr.lib
IRQL <= APC_LEVEL

另請參閱

FltAcquirePushLockExclusiveEx

FltAcquirePushLockShared

FltDeletePushLock

FltInitializePushLock

FltReleasePushLock

FsRtlEnterFileSystem

KeEnterCriticalRegion