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
NtCreateFile 或 NtOpenFile 为将刷新其缓冲区的文件返回的句柄。 此参数是必需的,不能为 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。
对于来自内核模式驱动程序的调用,Windows Native System Services 例程的 NtXxx 和 ZwXxx 版本在处理和解释输入参数的方式上的行为可能有所不同。 有关例程的 NtXxx 和 ZwXxx 版本之间的关系的详细信息,请参阅 使用本机系统服务例程的 Nt 和 Zw 版本。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 8 |
目标平台 | 通用 |
标头 | ntifs.h (包括 Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (请参阅“备注”部分。) |