NtFlushBuffersFileEx 函数 (ntifs.h)

NtFlushBuffersFileEx 例程向文件系统发送给定文件的刷新请求。 可以设置可选的刷新作标志来控制如何将文件数据写入存储。

语法

__kernel_entry NTSYSCALLAPI NTSTATUS NtFlushBuffersFileEx(
  [in]  HANDLE           FileHandle,
  [in]  ULONG            Flags,
  [in]  PVOID            Parameters,
  [in]  ULONG            ParametersSize,
  [out] PIO_STATUS_BLOCK IoStatusBlock
);

参数

[in] FileHandle

NtCreateFileNtOpenFile 为要刷新其缓冲区的文件返回的句柄。 此参数是必需的,不能为 NULL。

[in] Flags

刷新作标志。 标志 可以是以下值之一:

价值 意义
0 (正常) 将写入文件缓存中的文件数据和元数据,并将基础存储同步以刷新其缓存。 支持的 Windows 文件系统:NTFS、ReFS、FAT、exFAT。
FLUSH_FLAGS_FILE_DATA_ONLY 将写入文件缓存中的文件数据。 不会写入任何元数据,基础存储不会同步以刷新其缓存。 此标志对卷句柄无效。 支持的 Windows 文件系统:NTFS、FAT、exFAT。
FLUSH_FLAGS_NO_SYNC 将写入文件缓存中的文件数据和元数据。 基础存储未同步以刷新其缓存。 此标志对卷句柄无效。 支持的 Windows 文件系统:NTFS、FAT、exFAT。
FLUSH_FLAGS_FILE_DATA_SYNC_ONLY 给定文件中的数据将从 Windows 内存中缓存写入。 只会刷新数据检索所需的元数据(将尽可能多地跳过时间戳更新)。 基础存储已同步以刷新其缓存。 此标志对卷或目录句柄无效。 支持的 Windows 文件系统:NTFS。

[in] Parameters

指向具有其他参数的块的指针。 此参数当前必须设置为 NULL。

[in] ParametersSize

参数 指向的块的大小(以字节为单位)。 此参数当前必须设置为 0。

[out] IoStatusBlock

调用方 I/O 状态块的地址。 此参数是必需的,不能为 NULL。

返回值

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

返回代码 描述
STATUS_MEDIA_WRITE_PROTECTED 该文件驻留在受写保护的卷上;这是一个错误代码。
STATUS_VOLUME_DISMOUNTED 该文件驻留在当前未装载的卷上;这是一个错误代码。
STATUS_ACCESS_DENIED 该文件既没有写入访问权限,也没有追加访问权限。

言论

微型筛选器驱动程序应调用 FltFlushBuffers2,而不是调用 NtFlushBuffersFileEx

旧文件系统筛选器驱动程序可以调用 NtFlushBuffersFileEx,为给定文件向文件系统发出 IRP_MJ_FLUSH_BUFFERS 请求。 刷新作是同步的。

NtFlushBuffersFileEx 的调用方必须在 IRQL = PASSIVE_LEVEL 上运行,并且 启用了特殊内核 APC

对于内核模式驱动程序的调用,NtXxxZwXxx 版本的 Windows 本机系统服务例程的行为方式可能以不同的方式处理和解释输入参数。 有关 NtXxxZwXxx 例程之间的关系的详细信息,请参阅 使用 Nt 和 Zw 版本的本机系统服务例程

要求

要求 价值
最低支持的客户端 Windows 8
目标平台 普遍
标头 ntifs.h (include Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL(请参阅“备注”部分)。

另请参阅

FltFlushBuffers2

IRP_MJ_FLUSH_BUFFERS

使用本机系统服务例程的 Nt 和 Zw 版本

NtCreateFile

NtOpenFile