共用方式為


FltProcessFileLock 函式 (fltkernel.h)

FltProcessFileLock 例程程式,並完成檔案鎖定作業。

語法

FLT_PREOP_CALLBACK_STATUS FLTAPI FltProcessFileLock(
  [in]           PFILE_LOCK         FileLock,
  [in]           PFLT_CALLBACK_DATA CallbackData,
  [in, optional] PVOID              Context
);

參數

[in] FileLock

檔案 FILE_LOCK 結構的指標。 這個結構必須由先前呼叫 FltAllocateFileLockFltInitializeFileLock初始化。

[in] CallbackData

IRP_MJ_LOCK_CONTROL 作業的回呼資料 (FLT_CALLBACK_DATA) 結構的指標。

[in, optional] Context

完成作業時要使用的內容指標。 此內容指標會傳遞至 CompleteLockCallbackDataRoutine,並 UnlockRoutine 回呼例程,而 minifilter 驅動程式在先前呼叫中註冊 FltAllocateFileLock。 這個參數是選擇性的,而且可以是 NULL。

傳回值

FltProcessFileLock 會傳回下列其中一項。

傳回碼 描述
FLT_PREOP_COMPLETE 篩選管理員是使用 CallbackData來完成,現在可以完成。
FLT_PREOP_DISALLOW_FASTIO CallbackData 代表快速 I/O 作業,且堆疊中的小型篩選驅動程式不允許用於這項作業的快速 I/O。 篩選管理員不會將作業傳送至不允許作業的任何迷你篩選驅動程式。 在此情況下,篩選管理員只會呼叫 Minifilter 驅動程式上方小型篩選驅動程式的後置操作回呼例程(和 CompleteLockCallbackDataRoutine 回呼), 不允許快速 I/O 作業。
FLT_PREOP_PENDING 鎖定作業已畫上筆。

言論

FltProcessFileLock 處理檔案鎖定 (IRP_MJ_LOCK_CONTROL) 作業。 鎖定作業可以是快速的 I/O 或 IRP 型作業。

針對解除鎖定作業,篩選管理員會呼叫 UnlockRoutine 回呼例程,呼叫者已在先前呼叫中註冊 FILE_LOCK 結構,FltAllocateFileLock

當鎖定作業完成時,篩選管理員會呼叫 CompleteLockCallbackDataRoutinePFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE) 完成回呼例程,呼叫端在先前呼叫中註冊 FILE_LOCK 結構,FltAllocateFileLock

當傳遞至 FltProcessFileLockCallbackData 參數代表快速 I/O 作業時,不會叫用 FltAllocateFileLock 例程之 CompleteLockCallbackDataRoutine 參數中指定的回呼。 只有當 CallbackData 中的 I/O 作業是 IRP,而且 CompleteLockCallbackDataRoutine 不是 NULL 時,才會呼叫回呼例程。

若要判斷 CallbackData 是否代表快速 I/O 作業,請使用 FLT_IS_FASTIO_OPERATION 巨集。

若要設定與初始化新的檔案鎖定結構,請呼叫 FltAllocateFileLock

若要釋放初始化 FILE_LOCK 結構,請呼叫 FltFreeFileLock

要求

要求 價值
最低支援的用戶端 Windows XP with SP2
支援的最低伺服器 Windows Server 2003 with SP1
目標平臺 普遍
標頭 fltkernel.h (包括 Fltkernel.h)
連結庫 FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

另請參閱

FILE_LOCK

FLT_CALLBACK_DATA

FLT_IS_FASTIO_OPERATION

FltAllocateFileLock

FltCheckLockForReadAccess

FltCheckLockForWriteAccess

FltFreeFileLock

FltInitializeFileLock

FltUninitializeFileLock

FsRtlProcessFileLock

IRP_MJ_LOCK_CONTROL

PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE

[PUNLOCK_ROUTINE](../ntifs/nc-ntifs-punlock_routine.md