Udostępnij za pośrednictwem


Zamykanie obiektu mapowania plików

Po zakończeniu procesu z obiektem mapowania plików należy zniszczyć wszystkie widoki plików w przestrzeni adresowej przy użyciu funkcji UnmapViewOfFile dla każdego widoku plików.

Odmapowanie zamapowanego widoku pliku unieważnia zakres zajmowany przez widok w przestrzeni adresowej procesu i udostępnia zakres dla innych alokacji. Usuwa wpis zestawu roboczego dla każdej niezamapowanej strony wirtualnej, która była częścią zestawu roboczego procesu i zmniejsza rozmiar zestawu roboczego procesu. Ponadto zmniejsza licznik udziałów odpowiedniej strony fizycznej.

Zmodyfikowane strony w niezamapowanym widoku nie są zapisywane na dysku, dopóki ich liczba udziałów nie osiągnie zera lub innymi słowy, dopóki nie zostaną one zamapowane lub przycięte z zestawów roboczych wszystkich procesów, które współużytkują strony. Nawet wtedy zmodyfikowane strony są zapisywane na dysku w trybie "opóźnionym"; oznacza to, że modyfikacje mogą być buforowane w pamięci i zapisywane na dysku później. Aby zminimalizować ryzyko utraty danych w przypadku awarii zasilania lub awarii systemu, aplikacje powinny jawnie opróżnić zmodyfikowane strony przy użyciu funkcji FlushViewOfFile.

Po zakończeniu każdego procesu korzystając z obiektu mapowania plików i odmapowaniu wszystkich widoków należy zamknąć uchwyt obiektu mapowania plików i plik na dysku, wywołując CloseHandle. Te wywołania funkcji CloseHandle powodzą się, nawet jeśli istnieją widoki plików, które są nadal otwarte. Jednak pozostawienie zamapowanych widoków plików powoduje przecieki pamięci.