2011-02-15 58 views
2

我的文件(sample.txt)有10個字符。我以寫模式打開文件,已經完成了createfilemapping("mymapping")。然後我通過getchar來保存這個進程。 然後打開下面內存映射文件 - 如何在其他進程中插入數據條

openfilemapping("mymapping"), 
char*k = (char*)mapviewoffile 

另一個進程它執行現在我可以訪問sample.txt的的值,並用K改變它。但是,如何在文件中插入/附加另外10個字符的條帶。

回答

3

創建時共享內存映射的大小是固定的。您將需要再次調用CreateFileMapping以更大的映射大小。這會自動擴展文件,在這一點你可以再次MapViewOfFile,並寫入任何你想要的數據。請注意,您需要更改文件映射的名稱,除非您先關閉所有句柄和映射,以便銷燬文件映射。

順便說一句,使用由磁盤文件支持的命名文件映射是非同尋常的(但不是非法的)。通常,如果您映射的是真實文件,那麼您將通過NULLlpName參數CreateFileMapping。當你想創建一個沒有備份文件的共享內存映射時,你會傳入一個名字 - 也就是hFile將是NULLlpName是共享內存段的名稱。