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 |