CreateFileMappingA , см. Также CreateProcess , DuplicateHandle и OpenFileMapping функции.
"Создание объекта сопоставления файловфактически не отображает представление в адресное пространство процесса. Функции MapViewOfFile и MapViewOfFileEx отображают представление файла в адресное пространство процесса.
С одним важнымисключение: представления файлов, полученные из любого объекта сопоставления файлов , который поддерживается одним и тем же файлом , являются связными или идентичными в определенное время . Согласованность гарантируется для представлений в рамках процесса идля представлений, отображаемых различными процессами.
Исключение относится к удаленным файлам. Хотя CreateFileMapping работает с удаленными файлами, он не сохраняет их согласованность. Например, если оба компьютера сопоставляют файлкак доступные для записи, и обе изменяют одну и ту же страницу, каждый компьютер видит только свои записи на страницу. Когда данные обновляются на диске, он не объединен. "
Согласно FlushViewOfFile ,
" Очистка диапазона отображенного представления инициирует запись грязных страниц вэтот диапазон на диск.Грязные страницы - это те, чье содержимое изменилось с момента отображения файла.Функция FlushViewOfFile не сбрасывает метаданные файла, и она не ожидает возврата, пока изменения не будут сброшены из основного аппаратного дискового кэша и физически записаны на диск .Чтобы очистить все «грязные» страницы, а также метаданные файла и убедиться, что они физически записаны на диск, вызовите FlushViewOfFile, а затем вызовите функцию FlushFileBuffers . "
Итак, когда вы закрываете представленияв UnmapViewOfFile
"Когда процесс завершил работу с объектом сопоставления файлов, он должен уничтожить все представления файлов в своем адресном пространстве, используя функцию UnmapViewOfFile для каждого представления файлов.
Отмена отображения сопоставленного представления файла делает недействительным диапазон, занимаемый представлением в адресном пространстве процесса, и делает диапазон доступным для других распределений .Он удаляет запись рабочего набора для каждой несопоставленной виртуальной страницы, которая была частью рабочего набора процесса, и уменьшает размер рабочего набора процесса. Это также уменьшает количество общих ресурсов соответствующей физической страницы.
Измененные страницы в не отображенном представлении не записываются на диск, пока их общий ресурс не достигнет нуля или вдругими словами, до тех пор, пока они не будут отображены или удалены из рабочих наборов всех процессов, которые совместно используют страницы .Даже тогда измененные страницы записываются «лениво» на диск;то есть изменения могут быть кэшированы в памяти и записаны на диск позднее.Чтобы минимизировать риск потери данных в случае сбоя питания или сбоя системы, приложения должны явно сбрасывать измененные страницы с помощью функции FlushViewOfFile . "