Sdílení souborů a paměti
Mapování souborů lze použít ke sdílení souboru nebo paměti mezi dvěma nebo více procesy. Ke sdílení souboru nebo paměti musí všechny procesy používat název nebo popisovač stejného objektu mapování souborů.
Pokud chcete sdílet soubor, první proces vytvoří nebo otevře soubor pomocí funkce CreateFile. Dále vytvoří objekt mapování souboru pomocí funkce CreateFileMapping, zadáním popisovače souboru a názvu objektu mapování souboru. Názvy událostí, semaphore, mutex, čekaný časovač, úloha a objekty mapování souborů sdílejí stejný obor názvů. Proto CreateFileMapping a OpenFileMapping funkce selžou, pokud zadají název, který je používán objektem jiného typu.
Pokud chcete sdílet paměť, která není přidružená k souboru, musí proces místo existujícího popisovače souboru použít funkci CreateFileMapping a zadat INVALID_HANDLE_VALUE jako parametr hFile. Odpovídající objekt mapování souborů přistupuje k paměti zálohované systémovým stránkovacím souborem. Při specifikaci hFile INVALID_HANDLE_VALUE při volání funkce CreateFileMappingje nutné uvést velikost větší než nula.
Nejjednodušší způsob, jak ostatní procesy mohou získat popisovač objektu mapování souboru vytvořeného prvním procesem, je použít funkci OpenFileMapping a zadat název objektu. To se označuje jako pojmenovaná sdílená paměť. Pokud objekt mapování souboru nemá název, musí proces získat popisovač prostřednictvím inheritace nebo duplikace. Další informace o dědičnosti a duplikaci naleznete v tématu Dědičnost.
Procesy, které sdílejí soubory nebo paměť, musí vytvářet zobrazení souborů pomocí funkce MapViewOfFile nebo MapViewOfFileEx. Musí koordinovat přístup pomocí semaforů, mutexů, událostí nebo jiné techniky vzájemného vyloučení. Další informace naleznete v tématu Synchronizace.
Sdílený objekt mapování souborů nebude zničen, dokud všechny procesy, které jej používají, nezavřou své popisovače pomocí funkce CloseHandle.
Informace o zabezpečení objektů mapování souborů naleznete v tématu Zabezpečení mapování souborů a přístupová práva.
Související témata