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 結構的指標。 這個結構必須由先前呼叫 FltAllocateFileLock 或 FltInitializeFileLock初始化。
[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。
當鎖定作業完成時,篩選管理員會呼叫 CompleteLockCallbackDataRoutine (PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE) 完成回呼例程,呼叫端在先前呼叫中註冊 FILE_LOCK 結構,FltAllocateFileLock。
當傳遞至 FltProcessFileLock 的 CallbackData 參數代表快速 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 |
另請參閱
PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE
[PUNLOCK_ROUTINE](../ntifs/nc-ntifs-punlock_routine.md