Sdílet prostřednictvím


Rozsah přidělené paměti

Veškerá paměť procesu přiděluje funkce přidělení paměti ( HeapAlloc, VirtualAlloc, GlobalAllocnebo LocalAlloc) je přístupný pouze pro tento proces. Paměť přidělená knihovnou DLL je však přidělena v adresním prostoru procesu, který se nazývá knihovna DLL a není přístupný jiným procesům používajícím stejnou knihovnu DLL. Pokud chcete vytvořit sdílenou paměť, musíte použít mapování souborů.

Mapování pojmenovaných souborů poskytuje snadný způsob, jak vytvořit blok sdílené paměti. Proces může zadat název, když použije funkci CreateFileMapping k vytvoření objektu mapování souborů. Jiné procesy mohou zadat stejný název buď CreateFileMapping, nebo OpenFileMapping funkce získat popisovač objektu mapování.

Každý proces určuje jeho popisovač objektu mapování souborů v MapViewOfFile funkce mapovat zobrazení souboru do vlastního adresního prostoru. Zobrazení všech procesů pro jeden objekt mapování souborů se mapují na stejné stránky s možností umístění fyzického úložiště. Virtuální adresy mapovaných zobrazení se však můžou lišit od jednoho procesu do druhého, pokud se k mapování zobrazení na zadanou adresu nepoužívá funkce MapViewOfFileEx. Stránky fyzického úložiště používané pro mapované zobrazení souborů nejsou sice globální, ale stránky fyzického úložiště používaného pro zobrazení mapovaných souborů nejsou globální; nejsou přístupné pro procesy, které nenamapovaly zobrazení souboru.

Všechny stránky potvrzené mapováním zobrazení souboru jsou vydány při posledním procesu s zobrazením objektu mapování buď ukončí nebo zruší mapování jeho zobrazení voláním UnmapViewOfFile funkce. V tuto chvíli se aktualizuje zadaný soubor (pokud existuje) přidružený k objektu mapování. Zadaný soubor lze také vynutit aktualizaci voláním FlushViewOfFile funkce.

Další informace naleznete v tématu Mapování souborů. Příklad sdílené paměti v knihovně DLL naleznete v tématu Použití sdílené paměti v knihovně Dynamic-Link.

Pokud má více procesů přístup k zápisu do sdílené paměti, musíte synchronizovat přístup k paměti. Další informace naleznete v tématu Synchronizace.