Функция 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:
Код возврата | Описание |
---|---|
|
FltOplockBreakToNone обнаружил сбой выделения пула или вызов функции FsRtlOplockBreakToNoneEx вернул ошибку. FltOplockBreakToNone задает код ошибки в элементе Statusструктуры IO_STATUS_BLOCK элемента IoStatus . Структура IO_STATUS_BLOCK указывается в элементе IoStatusструктуры данных обратного вызова FLT_CALLBACK_DATA . Параметр CallbackData указывает на этот FLT_CALLBACK_DATA. |
|
Был инициирован разрыв блокировки, в результате которого диспетчер фильтров перенаправил операцию ввода-вывода в рабочую очередь. Операция ввода-вывода представлена данными обратного вызова, на которые указывает параметр CallbackData . |
|
Данные обратного вызова, на которые указывает параметр CallbackData , не были подданы, и операция ввода-вывода была выполнена немедленно. |
Комментарии
Дополнительные сведения об оппортунистических блокировках см. в документации по Microsoft Windows SDK.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Подпрограмма FltOplockBreakToNone доступна начиная с Windows 7. |
Целевая платформа | Универсальное |
Верхняя часть | fltkernel.h (включая Fltkernel.h) |
Библиотека | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по