Закрытие объекта "проецируемый файл"
Когда процесс заканчивает работу с объектом "проецируемый файл", он должен уничтожить все представления файла в своем адресном пространстве, используя функцию UnmapViewOfFile для каждого представления данных файла.
if (!UnmapViewOfFile(lpMapAddress)) { ErrorHandler("Could not unmap view of file."); } |
Отмена отображения файла аннулирует указатель на виртуальное адресное пространство процесса. Если какая - либо из страниц представления файла изменилась, с тех пор как представление было отображено, система записывает измененные страницы файла на диск, используя кэширование. Чтобы передать данные на диск немедленно, вызовите функцию FlushViewOfFile перед прекращением отображения представления файла.
Когда каждый процесс заканчивает использовать объект "проецируемый файл" и прекращает отображать все представления данных, нужно вызвать функцию CloseHandle, чтобы закрыть дескриптор объекта "проецируемый файл" и файл на диске. Эти вызовы CloseHandle завершаются успешно, даже тогда, когда есть представления файла, которые все еще являются открытыми. Однако, оставшиеся отображения представлений файла становятся причиной утечки памяти.