我對內存映射文件非常陌生,而且我對某些東西有點失落。內存映射文件 - 映射結構而不是文件?
我知道,如果我有一個文件,我可以加載它,並在一次使用MMaps從各種工藝訪問它。
但在我的情況,我創建連接方法A,一個DLL,而該DLL被賦予一個指針,該進程A已準備了C表面。我需要與Process B分享這個cSurface的數據。我真的不想調用一個空白的MMap,並將我的Process A的表面複製到它中,只是在過程B中將它複製出來。
是嗎?可能映射我的表面,就好像它是一個文件一樣,所以當MMap創建時它已經指向表面數據(就像我加載SomeTextFile.txt一樣)?
我的計劃理論上是接收一個指向Proc A表面的指針,告訴窗口與給定名稱共享該表面的內存,並使用Mutexes來協調訪問 - 這個想法是兩個進程都讀取表面同樣的物理副本,不需要繁瑣的複製。
這可能嗎?
只是想我會讓我的帖子更清晰一點。假設我有一個名爲'char buffer [SUPER_MASSIVE]'的巨大緩衝區和一個名爲'hSuperMassiveFile'的巨大文件。我可以通過'CreateFileMapping(hSuperMassiveFile,...)'來分享SuperMassiveFile,但是我想對我的緩衝區做同樣的事情。有沒有辦法做'CreateFileMapping((HANDLE)緩衝區,...)'而不是共享我的緩衝區,而不需要請求一個空映射,然後'CopyMemory()'我的緩衝區到它呢? – 2012-01-12 14:25:09