我有一個代碼在重新映射之前使用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)讀取此文件時,會發生同樣的問題。 –