ZwFlushBuffersFileEx 函数 (ntifs.h)

ZwFlushBuffersFileEx 例程由文件系统筛选器驱动程序调用,以向文件系统发送给定文件的刷新请求。 可以设置可选的刷新操作标志来控制如何将文件数据写入存储。

语法

NTSYSAPI NTSTATUS ZwFlushBuffersFileEx(
  [in]  HANDLE           FileHandle,
        ULONG            FLags,
        PVOID            Parameters,
        ULONG            ParametersSize,
  [out] PIO_STATUS_BLOCK IoStatusBlock
);

参数

[in] FileHandle

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

FLags

刷新操作标志。 标志 可以是 0 或以下值之一。

价值 意义
FLUSH_FLAGS_FILE_DATA_ONLY

如果该文件位于 NTFS 文件系统上,则会写入文件缓存中的文件数据。 不会写入任何元数据,基础存储不会同步以刷新其缓存。 此标志对卷句柄无效。

FLUSH_FLAGS_NO_SYNC

如果该文件位于 NTFS 文件系统上,则会写入文件缓存中的文件数据和元数据。 基础存储未同步以刷新其缓存。 此标志对卷句柄无效。

 

Parameters

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

ParametersSize

参数块的大小(以字节为单位)。

[out] IoStatusBlock

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

返回值

ZwFlushBuffersFileEx 返回 STATUS_SUCCESS 或相应的 NTSTATUS 值,例如以下值之一:

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

言论

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

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

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

注意 如果对 ZwFlushBuffersFileEx 函数的调用在用户模式下发生,则应使用名称“NtFlushBuffersFileEx”而不是“ZwFlushBuffersFileEx”。
 
对于内核模式驱动程序的调用,Windows Native System Services 例程的 **Nt*Xxx*** 和 **Zw*Xxx*** 版本的行为方式可能有所不同,因为它们处理和解释输入参数的方式不同。 有关例程的 Nt*Xxx*** 和 **Zw*Xxx*** 版本之间的关系的详细信息,请参阅 [使用本机系统服务例程的 Nt 和 Zw 版本](/windows-hardware/drivers/kernel/using-nt-and-zw-versions-of-the-native-system-services-routines)。

要求

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

另请参阅

FltFlushBuffers

IRP_MJ_FLUSH_BUFFERS

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

ZwCreateFile

ZwOpenFile