Поделиться через


Функция 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_DATA) для операции IRP_MJ_LOCK_CONTROL.

[in, optional] Context

Указатель контекста, используемый при выполнении операции. Этот указатель контекста передается в подпрограммы обратного вызова CompleteLockCallbackDataRoutine и UnlockRoutine подпрограмм обратного вызова, зарегистрированных в предыдущем вызове драйвера минифильтра, зарегистрированного в FltAllocateFileLock. Этот параметр является необязательным и может иметь значение NULL.

Возвращаемое значение

FltProcessFileLock возвращает одно из следующих.

Возвращаемый код Описание
FLT_PREOP_COMPLETE Диспетчер фильтров выполняется с помощьюcallbackData , которая теперь может быть завершена.
FLT_PREOP_DISALLOW_FASTIO CallbackData представляет быструю операцию ввода-вывода, а драйвер минифильтра в стеке запрещает использование быстрого ввода-вывода для этой операции. Диспетчер фильтров не отправляет операцию любым драйверам минифильтра под тот, который запрещает операцию. В этом случае диспетчер фильтров вызывает только подпрограммы обратного вызова после операции (и CompleteLockCallbackDataRoutine обратных вызовов) драйверов минифильтра над драйвером минифильтра, который запрещал быструю операцию ввода-вывода.
FLT_PREOP_PENDING Операция блокировки задается.

Замечания

FltProcessFileLock обрабатывает операцию блокировки файлов (IRP_MJ_LOCK_CONTROL) . Операция блокировки может быть быстрой операцией ввода-вывода или IRP.

Для операций разблокировки диспетчер фильтров вызывает подпрограмму обратного вызова UnlockRoutine, которую вызывающий объект зарегистрировал для структуры FILE_LOCK в предыдущем вызове FltAllocateFileLock.

После завершения операции блокировки диспетчер фильтров вызывает подпрограмму обратного вызова CompleteLockCallbackDataRoutine (PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE) завершения, которую вызывающий объект зарегистрирован для структуры FILE_LOCK в предыдущем вызове FltAllocateFileLock.

Если параметр CallbackData, переданный FltProcessFileLock представляет быструю операцию ввода-вывода, обратный вызов, указанный в CompleteLockCallbackDataRoutine подпрограммы FltAllocateFileLock не вызывается. Только если операция ввода-вывода в CallbackData является IRP, и CompleteLockCallbackDataRoutine не null, будет вызываться подпрограмма обратного вызова.

Чтобы определить, представляет ли CallbackData быструю операцию ввода-вывода, используйте макрос FLT_IS_FASTIO_OPERATION.

Чтобы выделить и инициализировать новую структуру блокировки файлов, вызовите FltAllocateFileLock.

Чтобы освободить инициализированную структуру FILE_LOCK, вызовите FltFreeFileLock.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP с пакетом обновления 2 (SP2)
минимальный поддерживаемый сервер Windows Server 2003 с пакетом обновления 1 (SP1)
целевая платформа Всеобщий
заголовка fltkernel.h (include 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