Megosztás a következőn keresztül:


Lefoglalt memória hatóköre

A HeapAlloc, VirtualAlloc, GlobalAllocvagy LocalAlloc) által lefoglalt összes memória csak a folyamat számára érhető el. A DLL által lefoglalt memória azonban a DLL-nek nevezett folyamat címterében van lefoglalva, és nem érhető el az ugyanazon DLL-t használó más folyamatok számára. Megosztott memória létrehozásához fájlleképezést kell használnia.

A névvel ellátott fájlleképezéssel egyszerűen létrehozhat megosztott memóriablokkot. A folyamat megadhat egy nevet, amikor a CreateFileMapping függvényt használja egy fájlleképezési objektum létrehozásához. Más folyamatok ugyanazt a nevet adhatják meg a CreateFileMapping vagy OpenFileMapping függvénynek, hogy lekérjük a leírót a leképezési objektumhoz.

Minden folyamat megadja a leíróját a MapViewOfFile függvény fájlleképezési objektumához, hogy a fájl nézetét a saját címterébe képezhesse le. Az egyetlen fájlleképezési objektum összes folyamatának nézete ugyanazon osztható fizikai tárlapra van leképezve. A leképezett nézetek virtuális címei azonban folyamatonként eltérőek lehetnek, kivéve, ha a MapViewOfFileEx függvényt használja a nézet adott címen való leképezéséhez. Bár megosztható, a leképezett fájlnézethez használt fizikai tárlapok nem globálisak; nem érhetők el olyan folyamatokhoz, amelyek nem képezték le a fájl nézetét.

A fájlok nézetének leképezésével lekötött lapok akkor jelennek meg, amikor a leképezési objektum nézetével végzett utolsó folyamat leállítja vagy feloldja a nézetét a UnmapViewOfFile függvény meghívásával. Ekkor a leképezési objektumhoz társított megadott fájl (ha van ilyen) frissül. Egy megadott fájl a FlushViewOfFile függvény meghívásával is frissíthető.

További információ: Fájlleképezés. A DLL-ekben tárolt megosztott memória példáiért lásd: Megosztott memória használata Dynamic-Link Tár.

Ha több folyamat is rendelkezik írási hozzáféréssel a megosztott memóriához, szinkronizálnia kell a memóriához való hozzáférést. További információ: Szinkronizálási.