FlushViewOfFile 函数 (memoryapi.h)
将文件映射视图中的字节范围写入磁盘。
语法
BOOL FlushViewOfFile(
[in] LPCVOID lpBaseAddress,
[in] SIZE_T dwNumberOfBytesToFlush
);
参数
[in] lpBaseAddress
指向要刷新到映射文件的磁盘表示形式的字节范围的基址的指针。
[in] dwNumberOfBytesToFlush
要刷新的字节数。 如果 dwNumberOfBytesToFlush 为零,则将文件从基址刷新到映射的末尾。
返回值
如果该函数成功,则返回值为非零值。
如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。
注解
刷新映射视图的范围将启动该范围内的脏页写入磁盘。 脏页是自映射文件视图以来内容发生更改的页面。 FlushViewOfFile 函数不会刷新文件元数据,并且不会等待返回,直到从基础硬件磁盘缓存刷新更改并物理写入磁盘。 若要刷新所有脏页以及文件的元数据并确保它们以物理方式写入磁盘,请调用 FlushViewOfFile,然后调用 FlushFileBuffers 函数。
通过网络刷新内存映射文件时, FlushViewOfFile 保证数据已从本地计算机写入,但不保证数据驻留在远程计算机上。 服务器可以在远程端缓存数据。 因此, FlushViewOfFile 可以在数据以物理方式写入磁盘之前返回。
通过映射视图修改文件时,上次修改时间戳可能不会自动更新。 如果需要,调用方应使用 SetFileTime 设置时间戳。
在 Windows Server 2012 中,以下技术支持此函数。
技术 | 支持 |
---|---|
服务器消息块 (SMB) 3.0 协议 | 是 |
SMB 3.0 透明故障转移 (TFO) | 是 |
具有横向扩展文件共享的 SMB 3.0 (SO) | 是 |
群集共享卷文件系统 (CSV) | 是 |
弹性文件系统 (ReFS) | 是 |
暂停 CsvFs 时,此调用可能会失败,并显示一个错误,指示存在锁冲突。
示例
有关示例,请参阅 从文件视图中读取和写入。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2003 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | memoryapi.h (包括 Windows.h、Memoryapi.h) |
Library | onecore.lib |
DLL | Kernel32.dll |