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
指向回调数据的指针 (FLT_CALLBACK_DATAIRP_MJ_LOCK_CONTROL 操作的) 结构。
[in, optional] Context
完成操作时要使用的上下文指针。 此上下文指针传递到微筛选器驱动程序在上一次调用 FltAllocateFileLock 中注册的 CompleteLockCallbackDataRoutine 和 UnlockRoutine 回调例程。 此参数是可选的,可以为 NULL。
返回值
FltProcessFileLock 返回下列值之一。
返回代码 | 说明 |
---|---|
FLT_PREOP_COMPLETE | 筛选器管理器使用 CallbackData 完成,现在可以完成此操作。 |
FLT_PREOP_DISALLOW_FASTIO | CallbackData 表示快速 I/O 操作,堆栈中的微筛选器驱动程序已禁止将快速 I/O 用于此操作。 筛选器管理器不会将操作发送到不允许该操作的微筛选器驱动程序下的任何微筛选器驱动程序。 在这种情况下,筛选器管理器仅调用操作后回调例程 (和 CompleteLockCallbackDataRoutine 回调,) 不允许快速 I/O 操作的微筛选器驱动程序上方的微筛选器驱动程序。 |
FLT_PREOP_PENDING | 锁定操作已插入。 |
注解
FltProcessFileLock (IRP_MJ_LOCK_CONTROL) 操作 处理文件锁。 锁定操作可以是快速 I/O 或基于 IRP 的操作。
对于解锁操作,筛选器管理器调用调用调用方在上一次调用 FltAllocateFileLock 中为FILE_LOCK结构注册的 UnlockRoutine 回调例程。
锁定操作完成后,筛选器管理器调用 CompleteLockCallbackDataRoutine (PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE调用方在上一次调用 FltAllocateFileLock 中为FILE_LOCK结构注册 ) 完成回调例程。
当传递给 FltProcessFileLock 的 CallbackData 参数表示快速 I/O 操作时,不会调用 FltAllocateFileLock 例程的 CompleteLockCallbackDataRoutine 参数中指定的回调。 仅当 CallbackData 中的 I/O 操作是 IRP 且 CompleteLockCallbackDataRoutine 不是 NULL 时,才会调用回调例程。
若要确定 CallbackData 是否表示快速 I/O 操作,请使用 FLT_IS_FASTIO_OPERATION 宏。
若要分配和初始化新的文件锁结构,请调用 FltAllocateFileLock。
若要释放已初始化 FILE_LOCK 结构,请调用 FltFreeFileLock。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 带有 SP2 的 Windows XP |
最低受支持的服务器 | 带有 SP1 的 Windows Server 2003 |
目标平台 | 通用 |
标头 | fltkernel.h (包括 Fltkernel.h) |
Library | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |
另请参阅
PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE
[PUNLOCK_ROUTINE] (./ntifs/nc-ntifs-punlock_routine.md