Функция FltOplockBreakToNone (fltkernel.h)

Процедура FltOplockBreakToNone немедленно прерывает все оппортунистические блокировки (oplocks) без учета ключа oplock.

Синтаксис

FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockBreakToNone(
  [in]           POPLOCK                                 Oplock,
  [in]           PFLT_CALLBACK_DATA                      CallbackData,
  [in, optional] PVOID                                   Context,
  [in, optional] PFLTOPLOCK_WAIT_COMPLETE_ROUTINE        WaitCompletionRoutine,
  [in, optional] PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE PrePostCallbackDataRoutine
);

Параметры

[in] Oplock

Непрозрачный указатель oplock для файла. Этот указатель должен быть инициализирован предыдущим вызовом FltInitializeOplock.

[in] CallbackData

Указатель на структуру данных обратного вызова (FLT_CALLBACK_DATA) для операции ввода-вывода.

[in, optional] Context

Указатель на определяемые вызывающим объектом контекстные сведения, передаваемые подпрограммам обратного вызова, на которые указывают параметры WaitCompletionRoutine и PrePostCallbackDataRoutine .

[in, optional] WaitCompletionRoutine

Указатель на подпрограмму обратного вызова, предоставляемую вызывающим абонентом. Если выполняется прерывание блокировки, эта подпрограмма вызывается по завершении перерыва. Этот параметр является необязательным и может иметь значение NULL. Если значение равно NULL, вызывающий объект переводится в состояние ожидания, пока не завершится прерывание блокировки.

Эта подпрограмма объявляется следующим образом:

typedef VOID
(*PFLTOPLOCK_WAIT_COMPLETE_ROUTINE) (
    __in PFLT_CALLBACK_DATA CallbackData,
 __in_opt PVOID Context
      );

Эта подпрограмма имеет следующие параметры:

CallbackData

Указатель на структуру данных обратного вызова для операции ввода-вывода.

Контекст

Указатель сведений о контексте, переданный в параметре Context в FltOplockBreakToNone.

[in, optional] PrePostCallbackDataRoutine

Указатель на подпрограмму обратного вызова, предоставляемую вызывающим абонентом, которая будет вызываться, если требуется выполнить операцию ввода-вывода. Подпрограмма вызывается перед тем, как пакет oplock подает IRP. Этот параметр является необязательным и может иметь значение NULL.

Эта подпрограмма объявляется следующим образом:

typedef VOID
(*PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE) (
    __in PFLT_CALLBACK_DATA CallbackData,
 __in_opt PVOID Context
      );

Эта подпрограмма имеет следующие параметры:

CallbackData

Указатель на структуру данных обратного вызова для операции ввода-вывода.

Контекст

Указатель сведений о контексте, переданный в параметре Context в FltOplockBreakToNone.

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

FltOplockBreakToNone возвращает один из следующих кодов FLT_PREOP_CALLBACK_STATUS:

Код возврата Описание
FLT_PREOP_COMPLETE
FltOplockBreakToNone обнаружил сбой выделения пула или вызов функции FsRtlOplockBreakToNoneEx вернул ошибку. FltOplockBreakToNone задает код ошибки в элементе Statusструктуры IO_STATUS_BLOCK элемента IoStatus . Структура IO_STATUS_BLOCK указывается в элементе IoStatusструктуры данных обратного вызова FLT_CALLBACK_DATA . Параметр CallbackData указывает на этот FLT_CALLBACK_DATA.
FLT_PREOP_PENDING
Был инициирован разрыв блокировки, в результате которого диспетчер фильтров перенаправил операцию ввода-вывода в рабочую очередь. Операция ввода-вывода представлена данными обратного вызова, на которые указывает параметр CallbackData .
FLT_PREOP_SUCCESS_WITH_CALLBACK
Данные обратного вызова, на которые указывает параметр CallbackData , не были подданы, и операция ввода-вывода была выполнена немедленно.

Комментарии

Дополнительные сведения об оппортунистических блокировках см. в документации по Microsoft Windows SDK.

Требования

Требование Значение
Минимальная версия клиента Подпрограмма FltOplockBreakToNone доступна начиная с Windows 7.
Целевая платформа Универсальное
Верхняя часть fltkernel.h (включая Fltkernel.h)
Библиотека FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

См. также раздел

FLT_CALLBACK_DATA

FltInitializeOplock

FsRtlOplockBreakToNoneEx

IO_STATUS_BLOCK