如何确保数据刷新到文件 IO (WriteFile()) 上的 HDD(未缓冲)

How to make sure data is flushed to HDD (not buffered) on file IO (WriteFile())

本文关键字:上的 WriteFile IO HDD 缓冲 文件 刷新 何确保 确保 数据      更新时间:2023-10-16

在冗长且可能系统压力很大的操作中,我不时通过文件句柄更新文件并WriteFile

我注意到当我右键单击该文件并在 Windows 中询问其属性时,我根本没有看到它已更新。 修改的时间/数据不反映我所做的实际更新。

我意识到 Windows 可能会缓冲内存中的内容,直到文件句柄关闭。 整个想法是更新文件,以便当系统崩溃时,我们至少知道我们得到了哪里(有点)。

如何确保在不关闭文件句柄的情况下刷新内容?

我建议您尝试刷新缓冲区或检查WriteFile是否返回 TRUE。如果不是,则可能有问题,例如权限被拒绝或其他内容。您可以使用GetLastError来实现这一点。