FltFlushBuffers2 函数 (fltkernel.h)

微型筛选器驱动程序调用 FltFlushBuffers2,以便向文件系统发送给定文件的刷新请求。

语法

NTSTATUS FLTAPI FltFlushBuffers2(
  PFLT_INSTANCE      Instance,
  PFILE_OBJECT       FileObject,
  ULONG              FlushType,
  PFLT_CALLBACK_DATA CallbackData
);

参数

Instance

[in]调用微型筛选器驱动程序实例的不透明实例指针。 此参数是必需的,不能为 NULL。

FileObject

[in]要刷新的文件或卷的文件对象指针。 此参数是必需的,不能为 NULL。

FlushType

[in]指定文件系统应在该文件上执行的作的刷新类型。 FlushType 可以是下列项之一:

FlushType作值 描述
0 如果 fileObject 适用于文件,则文件缓存中的文件和元数据都将写入,并且基础存储将同步以刷新其缓存。 如果 FileObject 适用于卷,则文件系统将导致写入卷上所有修改的文件的文件数据和元数据,并将基础存储同步以刷新其缓存。 此作等效于 FltFlushBuffers
FLT_FLUSH_TYPE_FLUSH_AND_PURGE 与 0(FltFlushBuffers),不同之处在于缓存在刷新完成后也会清除。
FLT_FLUSH_TYPE_FILE_DATA_ONLY 如果该文件位于 NTFS 文件系统上,则只会写入文件缓存中的文件数据。 不会写入任何元数据,基础存储不会同步以刷新其缓存。 如果 FileObject 适用于卷,则此标志无效。
FLT_FLUSH_TYPE_NO_SYNC 如果该文件位于 NTFS 文件系统上,则会写入文件缓存中的文件数据和元数据。 基础存储不会同步以刷新其缓存。 如果 FileObject 适用于卷,则此标志无效。
FLT_FLUSH_TYPE_DATA_SYNC_ONLY 如果该文件位于 NTFS 文件系统上,则会写入文件缓存中的文件数据。 未写入任何元数据。 基础存储已同步以刷新其缓存。 如果 fileObject 卷或目录,则此标志无效。

CallbackData

[in/optional]指向用于传播调用方 IRP 扩展的可选 FLT_CALLBACK_DATA 结构的指针。 请参阅 FltPropagateIrpExtension

返回值

FltFlushBuffers2 返回STATUS_SUCCESS或适当的 NTSTATUS 值,例如以下值之一:

返回代码 描述
STATUS_MEDIA_WRITE_PROTECTED 该文件驻留在受写保护的卷上。 这是一个错误代码。
STATUS_VOLUME_DISMOUNTED 该文件驻留在当前未装载的卷上。 这是一个错误代码。

言论

微型筛选器驱动程序可以调用 FltFlushBuffers2,为给定文件向文件系统发出 IRP_MJ_FLUSH_BUFFERS 请求。 刷新作是同步的,并颁发给指定的 实例下面的实例

如果该文件位于 NTFS 文件系统上,微型筛选器可以通过 FlushType 参数控制刷新类型。

要求

要求 价值
最低支持的客户端 Windows 10 版本 1903
标头 fltkernel.h

另请参阅

FltFlushBuffers

FltPropagateIrpExtension

IRP_MJ_FLUSH_BUFFERS