檔案對應可用來在兩個或多個進程之間共用檔案或記憶體。 若要共用檔案或記憶體,所有進程都必須使用相同檔案對應物件的名稱或句柄。
若要共用檔案,第一個程式會使用 CreateFile 函式來建立或開啟檔案。 接下來,它會使用 createFileMapping函式建立檔案對應物件,並指定檔案對應物件的名稱。 事件、旗號、mutex、可等候定時器、作業和檔案對應物件的名稱會共用相同的命名空間。 因此,CreateFileMapping 和 OpenFileMapping 函式,如果函式指定另一個類型物件正在使用的名稱,就會失敗。
若要共用與檔案無關的記憶體,進程必須使用 CreateFileMapping 函式,並將 INVALID_HANDLE_VALUE 指定為 hFile 參數,而不是現有的檔句柄。 對應的檔案對應物件會存取系統分頁檔案所支援的記憶體。 當您在呼叫 CreateFileMapping時,並指定 hFile 為 INVALID_HANDLE_VALUE,則必須指定大於零的大小。
若要讓其他進程取得第一個進程所建立之檔案對應物件的句柄,最簡單的方式是使用 OpenFileMapping 函式,並指定對象的名稱。 這被稱為 ,名為共享記憶體。 如果檔案對應對象沒有名稱,程序必須透過繼承或重複取得它的控制碼。 如需繼承和重複的詳細資訊,請參閱 繼承。
共用檔案或記憶體的進程必須使用 MapViewOfFile 或 MapViewOfFileEx 函式建立檔案檢視。 他們必須使用號誌、Mutex、事件或其他相互排除技術來協調其存取。 如需詳細資訊,請參閱 同步處理。
共用檔案對應物件只有在使用 CloseHandle 函式關閉所有使用其的程序的句柄後,才會被銷毀。
如需檔案對應物件安全性的相關信息,請參閱 檔案對應安全性和存取權限。
相關主題