Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
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 |