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

指向 I/O 操作的 IRP 的指针。

[in] Flags

关联的文件 I/O 操作的位掩码。 文件系统或筛选器驱动程序设置位以指定 FsRtlOplockBreakToNoneEx的行为。 标志 参数具有以下选项:

OPLOCK_FLAG_COMPLETE_IF_OPLOCKED(0x00000001)

指定允许 oplock 中断继续,而不阻止或挂起导致 oplock 中断的操作。 通常,仅当 Irp 参数指向的 IRP 声明IRP_MJ_CREATE操作时,才会使用此标志。

[in, optional] Context

指向要传递给 CompletionRoutinePostIrpRoutine 参数指向的回调例程的调用方定义的上下文信息的指针。

[in, optional] CompletionRoutine

指向调用方提供的回调例程的指针。 如果操作锁中断正在进行中,则当中断完成时将调用此例程。 此参数是可选的,可以 NULL。 如果 NULL,则调用方将进入等待状态,直到 oplock 中断完成。

此例程声明如下:

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

此例程具有以下参数:

上下文

Context 参数中传递的上下文信息指针,用于 FsRtlOplockBreakToNoneEx

Irp

指向 I/O 操作的 IRP 的指针。

[in, optional] PostIrpRoutine

指向调用方提供的回调例程的指针,如果要对 I/O 操作进行笔画,则调用该例程。 在 oplock 包笔触 IRP 之前调用例程。 此参数是可选的,可以 NULL

此例程声明如下:

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

上下文

Context 参数中传递的上下文信息指针,用于 FsRtlOplockBreakToNoneEx

Irp

指向 I/O 操作的 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 如果调用方在 Flags 参数中设置OPLOCK_FLAG_COMPLETE_IF_OPLOCKED,并且必须断开 oplock。

言论

有关机会锁的详细信息,请参阅 Microsoft Windows SDK 文档。

微型筛选器应调用 FltOplockBreakToNoneEx 而不是 FsRtlOplockBreakToNoneEx

要求

要求 价值
最低支持的客户端 从 Windows 7 开始,FsRtlOplockBreakToNoneEx 例程可用。
目标平台 普遍
标头 ntifs.h (include Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另请参阅

FltOplockBreakToNoneEx

FsRtlInitializeOplock