文件映射打开(Windows)

File mapping opening (Windows)

本文关键字:Windows 映射 文件      更新时间:2023-10-16

如何在Windows上正确打开/使用文件映射,并能够在没有文件映射的情况下从另一个进程进行写入;

例如,进程A写入大的日志文件,它打开文件,将新数据写到最后,或者用新数据重写它。

进程B并行打开此文件作为文件映射,并不时读取内存页以进行更新,而不关闭文件映射。

请不要问我为什么要做我上面解释的逻辑。我需要知道能做到吗?

没有什么可以阻止您将文件映射对象与您正在使用常规文件系统功能(ReadFileWriteFile等)更新的文件相关联。但您不会喜欢结果。如果其他进程通过文件映射功能更新文件,Windows保证文件映射视图是一致的。当文件以其他方式更新时,它不会做出这样的保证。事实上,它几乎可以保证文件映射视图显示的内容与文件的实际内容不匹配。

所以,是的,你可以这样做。但您不应该这样做,因为无法保证映射视图看到的是文件中的实际内容。