我有一个代码在重新映射之前使用MapViewOfFile和FlushViewOfFile写入文件。MapViewOfFile不会导致从文件读取
和我有一个第二代码,即从相同的文件中读取(在磁盘上,而不是HANDLE /映射对象)在同一进程中的其他线程使用MapViewOfFile。
的视图的标志是PAGE_READONLY/FILE_READ和PAGE_READWRITE/FILE_WRITE。
在我的电脑上,一切正常。 但当相同的构建与其他PC上运行的服务,它有一个奇怪的错误: 当我重新映射与偏移== 0读者(这意味着UnmapViewOfFile + MapViewOfFile)(阅读一些文件头),它不返回任何错误,但是阅读本身会返回一些旧值,这些值已经被其他线程修改过了。
当我打开的ProcessMonitor,这表明,有没有从偏移量= 0,只写读书。
那么,问题是,新的呼叫的CreateFileMapping/MapViewOfFile成功地返回,但映射一些旧的缓存页面,而不会从文件中读取新的数据。
再次,相同的构建罚款在我的电脑上工作。
有人可以提出一些建议吗?谢谢。
貌似问题是FlushViewOfFile。 我已经切换到简单的ReadFile阅读,并且它可以在本地PC上正常工作,但是当我尝试从另一台PC(使用简单的ReadFile)读取此文件时,会发生同样的问题。 –