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