FltOplockFsctrlEx 函数 (fltkernel)

FltOplockFsctrlEx 例程代表微筛选器驱动程序 (oplock) 操作执行各种机会锁定。

语法

FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockFsctrlEx(
  [in] POPLOCK            Oplock,
  [in] PFLT_CALLBACK_DATA CallbackData,
  [in] ULONG              OpenCount,
  [in] ULONG              Flags
);

参数

[in] Oplock

文件的不透明 oplock 指针。 此指针必须已由之前对 FltInitializeOplock的调用初始化。

[in] CallbackData

指向 i/o 操作的 FLT_CALLBACK_DATA 结构的指针。 此参数是必需的,不能为 NULL

[in] OpenCount

如果正在请求排他 oplock,则为该文件的用户句柄数。 为 level 2、R 或 RH oplock 请求设置非零值将指示文件上存在字节范围锁。 有关 oplock 类型的信息,请参阅 Oplock 概述

[in] Flags

关联的 oplock 操作的位掩码。 微筛选器驱动程序设置位以指定 FltOplockFsctrlEx 的行为。 Flags 参数具有以下选项:

Value 含义
(0x00000001) OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH 文件系统验证所有当前打开的句柄上的所有 oplock 项是否匹配。 通过指定此标志,可在文件存在多个打开的句柄时允许 oplock 包授予级别为 RW 或 RWH 的 oplock。 有关 oplock 类型的详细信息,请参阅 Oplock 概述

返回值

FltOplockFsctrlEx 为某些 FSCTL 操作返回 FLT_PREOP_PENDING。 有关详细信息,请参阅以下 "备注" 部分中列出的 FSCTL 代码的参考页。 否则, FltOplockFsctrlEx 将返回 FLT_PREOP_COMPLETE。

注解

微筛选器驱动程序调用 FltOplockFsctrlEx 为创建操作或文件系统控制 i/o 操作执行各种机会锁定操作。

CallbackData 参数指向的 FLT_CALLBACK_DATA结构必须表示基于 IRP 的 IRP_MJ_FILE_SYSTEM_CONTROLIRP_MJ_CREATE操作。

如果操作是 IRP_MJ_FILE_SYSTEM_CONTROL 操作,则可以将 FltOplockFsctrlEx 用于以下 FSCTL 代码:

在操作的 FLT_PARAMETERS结构的 FsControlCode 成员中设置 FSCTL 代码。 有关 FsControlCode 和其他 IRP_MJ_FILE_SYSTEM_CONTROL 参数的详细信息,请参阅 IRP_MJ_FILE_SYSTEM_CONTROL 的 FLT_PARAMETERS

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

如果操作是 IRP_MJ_CREATE 请求,则在满足以下所有条件时,可以使用 FltOplockFsctrl 请求挂起的筛选器机会锁定:

  • OpenCount 参数的值必须为1。
  • FILE_READ_ATTRIBUTES IRP_MJ_CREATE 请求的 DesiredAccess 参数的值。 此参数是在操作 FLT_PARAMETERS 结构的 SecurityContext 成员中设置的。 有关详细信息,请参阅 IRP_MJ_CREATE FLT_PARAMETERS
  • IRP_MJ_CREATE 操作的 ShareAccess 参数的值为 FILE_SHARE_READ、FILE_SHARE_WRITE 或 FILE_SHARE_DELETE。 此参数是在操作 FLT_PARAMETERS 结构的 ShareAccess 成员中设置的。 有关详细信息,请参阅 IRP_MJ_CREATE FLT_PARAMETERS

调用此函数的筛选器和文件系统必须将调用同步到系统提供的 oplock 包。 有关详细信息,请参阅 Oplock 同步

要求

   
最低受支持的客户端 此例程从 Windows 8 开始可用。
目标平台 通用
标头 fltkernel (包含 Fltkernel)
Library FltMgr
.DLL Fltmgr.sys
IRQL <= APC_LEVEL

请参阅

FLT_CALLBACK_DATA

IRP_MJ_CREATE 的 FLT_PARAMETERS

IRP_MJ_FILE_SYSTEM_CONTROL 的 FLT_PARAMETERS

FSCTL_OPBATCH_ACK_CLOSE_PENDING

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE

FSCTL_OPLOCK_BREAK_ACK_NO_2

FSCTL_OPLOCK_BREAK_NOTIFY

FSCTL_REQUEST_BATCH_OPLOCK

FSCTL_REQUEST_FILTER_OPLOCK

FSCTL_REQUEST_OPLOCK

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FltCheckOplockEx

FltInitializeOplock

FsRtlOplockFsctrlEx

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL