共用方式為


已配置記憶體的範圍

進程使用記憶體配置函式 ( HeapAllocVirtualAllocGlobalAllocLocalAlloc) 才能存取進程所配置的所有記憶體。 不過,DLL 所配置的記憶體會配置在呼叫 DLL 的進程位址空間中,而且無法使用相同 DLL 存取其他進程。 若要建立共用記憶體,您必須使用檔案對應。

具名檔案對應可讓您輕鬆建立共用記憶體區塊。 進程可以在使用 CreateFileMapping 函式來建立檔案對應物件時指定名稱。 其他進程可以指定與 CreateFileMapping 或 OpenFileMapping 相同的名稱,以取得對應物件的控制碼。

每個進程都會指定其處理 MapViewOfFile 函式中的檔案對應物件,以將檔案的檢視對應至自己的位址空間。 單一檔案對應物件之所有進程的檢視都會對應至實體儲存體的相同可共用頁面。 不過,除非 MapViewOfFileEx 函式用來對應指定位址的檢視,否則對應檢視的虛擬位址可能會因一個進程而異。 雖然可共用,但用於對應檔案檢視的實體儲存體頁面不是全域的;這些檔案無法存取尚未對應檔案檢視的程式。

當具有對應物件檢視的最後一個進程終止或取消對應檢視時,會藉由呼叫 UnmapViewOfFile 函式,釋放任何透過對應檢視所認可的頁面。 此時,如果更新與對應物件相關聯的任何) ,則指定的檔案 (。 您也可以呼叫 FlushViewOfFile 函式,強制更新指定的檔案。

如需詳細資訊,請參閱 檔案對應。 如需 DLL 中共用記憶體的範例,請參閱 在 Dynamic-Link Library 中使用共用記憶體

如果多個進程具有共用記憶體的寫入權限,您必須同步存取記憶體。 如需詳細資訊,請參閱 同步處理