Sdílet prostřednictvím


Vytvoření zobrazení souborů

Pokud chcete namapovat data ze souboru na virtuální paměť procesu, musíte vytvořit zobrazení souboru. Funkce MapViewOfFile a MapViewOfFileEx používají popisovač objektu mapování souborů vrácený CreateFileMapping k vytvoření zobrazení souboru nebo části souboru ve virtuálním adresním prostoru procesu. Tyto funkce selžou, pokud jsou příznaky přístupu v konfliktu s příznaky uvedenými při vytvoření objektu mapování souboru pomocí CreateFileMapping.

Funkce MapViewOfFile vrátí ukazatel na zobrazení souboru. Když přepíšete ukazatel v rozsahu adres zadaných v MapViewOfFile, aplikace může číst data ze souboru a zapisovat data do souboru. Zápis do zobrazení souboru způsobí změny objektu mapování souboru. Systém zpracovává skutečné zápisy do souboru na disku. Data se ve skutečnosti nepřenesou v době, kdy je objekt mapování souboru zapsán. Místo toho je většina vstupu a výstupu souboru (vstupně-výstupní) uložená do mezipaměti, aby se zlepšil obecný výkon systému. Aplikace mohou toto chování přepsat voláním FlushViewOfFile funkce, aby systém okamžitě prováděl diskové transakce.

Funkce MapViewOfFileEx funguje přesně stejně jako funkce MapViewOfFile s tím rozdílem, že umožňuje procesu určit základní adresu zobrazení souboru ve virtuálním adresního prostoru procesu v parametru lpvBase. Pokud na zadané adrese není dostatek místa, volání selže. Proto pokud musíte namapovat soubor na stejnou adresu v několika procesech, měly by procesy vyjednat vhodnou adresu: parametr lpvBase musí být celistvým násobkem granularity přidělení systémové paměti, jinak volání selže. Pokud chcete získat členitost přidělení paměti systému, použijte funkci GetSystemInfo, která vyplní členy struktury SYSTEM_INFO.

Aplikace může vytvořit více zobrazení souborů ze stejného objektu mapování souborů. Zobrazení souboru může mít jinou velikost než objekt mapování souboru, ze kterého je odvozený, ale musí být menší než objekt mapování souboru. Posun určený parametry dwOffsetHigh a dwOffsetLow funkce MapViewOfFile musí být násobkem systémové granularity přidělení.

Vytvoření zobrazení v souboru