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 |