Функция FsRtlOplockBreakToNoneEx (ntifs.h)
FsRtlOplockBreakToNoneEx подпрограмма нарушает все оппортунистические блокировки (oplocks) немедленно без учета любого ключа oplock.
Синтаксис
NTSTATUS FsRtlOplockBreakToNoneEx(
[in, out] POPLOCK Oplock,
[in] PIRP Irp,
[in] ULONG Flags,
[in, optional] PVOID Context,
[in, optional] POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine,
[in, optional] POPLOCK_FS_PREPOST_IRP PostIrpRoutine
);
Параметры
[in, out] Oplock
Непрозрачный указатель на оплок для файла. Этот указатель должен быть инициализирован предыдущим вызовом FsRtlInitializeOplock.
[in] Irp
Указатель на IRP для операции ввода-вывода.
[in] Flags
Битовая маска для связанной операции ввода-вывода файла. Файловая система или драйвер фильтра задает биты, чтобы указать поведение FsRtlOplockBreakToNoneEx. Параметр флагов
OPLOCK_FLAG_COMPLETE_IF_OPLOCKED (0x00000001)
Указывает, чтобы разрешить прерывание работы с оплоком, не блокируя или ожидая операции, вызвавшей разрыв оплока. Как правило, этот флаг используется только в том случае, если IRP параметр указывает на объявление операции IRP_MJ_CREATE.
[in, optional] Context
Указатель на сведения о контексте, определяемые вызывающим объектом, которые необходимо передать в подпрограммы обратного вызова, на которые указываются параметры
[in, optional] CompletionRoutine
Указатель на подпрограмму обратного вызова, предоставленного вызывающим абонентом. Если выполняется разрыв оплока, эта подпрограмма вызывается при завершении перерыва. Этот параметр является необязательным и может быть null. Если значение NULL, вызывающий объект помещается в состояние ожидания до завершения останова oplock.
Эта подпрограмма объявлена следующим образом:
typedef VOID
(*POPLOCK_WAIT_COMPLETE_ROUTINE) (
IN PVOID Context,
IN PIRP Irp
);
Эта подпрограмма имеет следующие параметры:
Контекст
Указатель сведений о контексте, переданный в параметре контекста
Irp
Указатель на IRP для операции ввода-вывода.
[in, optional] PostIrpRoutine
Указатель на подпрограмму обратного вызова вызываемого абонента, который должен вызываться, если операция ввода-вывода должна быть выполнена. Подпрограмма вызывается перед тем, как пакет oplock задается IRP. Этот параметр является необязательным и может быть null.
Эта подпрограмма объявлена следующим образом:
typedef VOID
(*POPLOCK_FS_PREPOST_IRP) (
IN PVOID Context,
IN PIRP Irp
);
Контекст
Указатель сведений о контексте, переданный в параметре контекста
Irp
Указатель на IRP для операции ввода-вывода.
Возвращаемое значение
FsRtlOplockBreakToNoneEx возвращает STATUS_SUCCESS или соответствующий код NTSTATUS, например один из следующих:
Возвращаемый код | Описание |
---|---|
|
IRP был отменен. STATUS_CANCELLED — это код ошибки. |
|
В настоящее время ведется разрыв оплока. Поэтому IRP был загонирован. STATUS_PENDING — это код успешного выполнения. |
|
Происходит оппортунистическая блокировка (oplock). STATUS_OPLOCK_BREAK_IN_PROGRESS — это код успешного выполнения, который |
Замечания
Дополнительные сведения о оппортунистических блокировках см. в документации по пакету SDK для Microsoft Windows.
Минифильтры должны вызывать FltOplockBreakToNoneEx вместо FsRtlOplockBreakToNoneEx.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Подпрограмма FsRtlOplockBreakToNoneEx доступна начиная с Windows 7. |
целевая платформа | Всеобщий |
заголовка | ntifs.h (include Ntifs.h) |
библиотеки |
NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |