Функция 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
Непрозрачный указатель на оплок для файла. Этот указатель должен быть инициализирован предыдущим вызовом FltInitializeOplock.
[in] CallbackData
Указатель на структуру данных обратного вызова (FLT_CALLBACK_DATA) для операции ввода-вывода.
[in, optional] Context
Указатель на определяемые вызывающим контекстом сведения о контексте, передаваемые в подпрограммы обратного вызова, на которые указываются параметры WaitCompletionRoutine и PrePostCallbackDataRoutine.
[in, optional] WaitCompletionRoutine
Указатель на подпрограмму обратного вызова, предоставленного вызывающим абонентом. Если выполняется разрыв оплока, эта подпрограмма вызывается при завершении перерыва. Этот параметр является необязательным и может быть null. Если значение NULL, вызывающий объект помещается в состояние ожидания до завершения останова oplock.
Эта подпрограмма объявлена следующим образом:
typedef VOID
(*PFLTOPLOCK_WAIT_COMPLETE_ROUTINE) (
__in PFLT_CALLBACK_DATA CallbackData,
__in_opt PVOID Context
);
Эта подпрограмма имеет следующие параметры:
CallbackData
Указатель на структуру данных обратного вызова для операции ввода-вывода.
Контекст
Указатель сведений о контексте, переданный в параметре контекста, FltOplockBreakToNone.
[in, optional] PrePostCallbackDataRoutine
Указатель на подпрограмму обратного вызова вызываемого абонента, который должен вызываться, если операция ввода-вывода должна быть выполнена. Подпрограмма вызывается перед тем, как пакет oplock задается IRP. Этот параметр является необязательным и может быть null.
Эта подпрограмма объявлена следующим образом:
typedef VOID
(*PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE) (
__in PFLT_CALLBACK_DATA CallbackData,
__in_opt PVOID Context
);
Эта подпрограмма имеет следующие параметры:
CallbackData
Указатель на структуру данных обратного вызова для операции ввода-вывода.
Контекст
Указатель сведений о контексте, переданный в параметре контекста, FltOplockBreakToNone.
Возвращаемое значение
FltOplockBreakToNone возвращает один из следующих кодов FLT_PREOP_CALLBACK_STATUS:
Возвращаемый код | Описание |
---|---|
|
fltOplockBreakToNone возникла ошибка выделения пула или вызов функции FsRtlOplockBreakToNoneEx. FltOplockBreakToNone установит код ошибки в элементе status структуры IO_STATUS_BLOCK элемента IoStatus. Структура IO_STATUS_BLOCK указывается в элементе IoStatus структуры данных обратного вызова FLT_CALLBACK_DATA. Параметр CallbackData указывает на этот FLT_CALLBACK_DATA. |
|
Была инициирована блокировка, из-за которой диспетчер фильтров опубликовал операцию ввода-вывода в рабочую очередь. Операция ввода-вывода представлена данными обратного вызова, на которые указывает параметр CallbackData. |
|
Данные обратного вызова, которые CallbackData указывает на то, что параметр не был задан, и операция ввода-вывода была выполнена немедленно. |
Замечания
Дополнительные сведения о оппортунистических блокировках см. в документации по пакету SDK для Microsoft Windows.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Подпрограмма FltOplockBreakToNone доступна начиная с Windows 7. |
целевая платформа | Всеобщий |
заголовка | fltkernel.h (include Fltkernel.h) |
библиотеки | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |