Поделиться через


Функция 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

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

[in, optional] CompletionRoutine

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

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

typedef VOID
(*POPLOCK_WAIT_COMPLETE_ROUTINE) (
      IN PVOID Context,
      IN PIRP Irp
      );

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

Контекст

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

Irp

Указатель на IRP для операции ввода-вывода.

[in, optional] PostIrpRoutine

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

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

typedef VOID
(*POPLOCK_FS_PREPOST_IRP) (
      IN PVOID Context,
      IN PIRP Irp
      );

Контекст

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

Irp

Указатель на IRP для операции ввода-вывода.

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

FsRtlOplockBreakToNoneEx возвращает STATUS_SUCCESS или соответствующий код NTSTATUS, например один из следующих:

Возвращаемый код Описание
STATUS_CANCELLED
IRP был отменен. STATUS_CANCELLED — это код ошибки.
STATUS_PENDING
В настоящее время ведется разрыв оплока. Поэтому IRP был загонирован. STATUS_PENDING — это код успешного выполнения.
STATUS_OPLOCK_BREAK_IN_PROGRESS
Происходит оппортунистическая блокировка (oplock). STATUS_OPLOCK_BREAK_IN_PROGRESS — это код успешного выполнения, который FsRtlOplockBreakToNoneEx возвращается, если вызывающий набор OPLOCK_FLAG_COMPLETE_IF_OPLOCKED в параметре флагов и оплок должен быть разбит.

Замечания

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

Минифильтры должны вызывать FltOplockBreakToNoneEx вместо FsRtlOplockBreakToNoneEx.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Подпрограмма FsRtlOplockBreakToNoneEx доступна начиная с Windows 7.
целевая платформа Всеобщий
заголовка ntifs.h (include Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

См. также

FltOplockBreakToNoneEx

FsRtlInitializeOplock