FltOplockFsctrl 函数 (fltkernel.h)

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

语法

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

参数

[in] Oplock

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

[in] CallbackData

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

[in] OpenCount

如果请求独占 oplock,则文件的用户句柄数。 为级别 2、R 或 RH oplock 请求设置非零值表示文件上有字节范围锁。 有关 oplock 类型的信息,请参阅 Oplock 概述

返回值

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

注解

微筛选器驱动程序调用 FltOplockFsctrl ,以执行各种机会锁定操作,以便创建或文件系统控制 I/O 操作。

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

如果操作是IRP_MJ_FILE_SYSTEM_CONTROL操作,则 FltOplockFsctrl 可以与以下 FSCTL 代码一起使用:

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

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

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

  • OpenCount 参数的值必须为 1。
  • IRP_MJ_CREATE请求的 DesiredAccess 参数的值FILE_READ_ATTRIBUTES。 此参数在操作的 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 同步

要求

要求
目标平台 通用
标头 fltkernel.h (包括 Fltkernel.h)
Library FltMgr.lib
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_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FltCheckOplock

FltCurrentBatchOplock

FltInitializeOplock

FltOplockIsFastIoPossible

FltUninitializeOplock

FsRtlOplockFsctrl

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL