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 之前,不需要先呼叫 KeEnterCriticalRegion 或 FsRtlEnterFileSystem。
若要在取得推送鎖定之後釋放,請呼叫 FltReleasePushLock。 每次呼叫 FltAcquirePushLockExclusive 都必須與 後續對 FltReleasePushLock 的呼叫進行比對。
若要取得共用存取的推送鎖定,請呼叫 FltAcquirePushLockShared。
若要初始化推送鎖定,請呼叫 FltInitializePushLock。
若要刪除推播鎖定,請呼叫 FltDeletePushLock。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
標頭 | fltkernel.h (包含 Fltkernel.h) |
程式庫 | FltMgr.lib |
IRQL | <= APC_LEVEL |