共用方式為


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 傳遞,因此不需要呼叫 KeEnterCriticalRegionFsRtlEnterFileSystem,再呼叫 FltAcquirePushLockExclusive

若要在取得推送鎖定之後釋放,請呼叫 FltReleasePushLockFltAcquirePushLockExclusive 的每個呼叫都必須與後續呼叫 FltReleasePushLock相符。

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

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

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

要求

要求 價值
目標平臺 普遍
標頭 fltkernel.h (包括 Fltkernel.h)
連結庫 FltMgr.lib
IRQL <= APC_LEVEL

另請參閱

FltAcquirePushLockExclusiveEx

FltAcquirePushLockShared

FltDeletePushLock

FltInitializePushLock

FltReleasePushLock

FsRtlEnterFileSystem

KeEnterCriticalRegion