Использование файла с отображением в памяти, предоставляя другим процессам полный доступ - PullRequest
3 голосов
/ 14 сентября 2011

Я пытаюсь использовать отображенный в памяти файл под окнами (используя функции CreateFile / CreateFileMapping / MapViewOfFile), и в настоящее время я указываю FILE_SHARE_READ и FILE_SHARE_WRITE при вызове CREATE_FILE.Тем не менее, это блокирует использование файла другими процессами.

Я хочу отобразить в памяти снимок файла в то время, когда я вызываю CreateFileMapping или MapViewOfFile, чтобыЯ не вижу изменений (записи или удаления), внесенных в файл другими процессами.Вроде как копирование при записи, но другие процессы делают запись.Могу ли я сделать это, используя отображенные в памяти файлы в Windows?

1 Ответ

3 голосов
/ 14 сентября 2011

Это просто не то, как работают файлы, отображенные в память.Windows устанавливает жесткую блокировку файла, чтобы никто не мог изменить его содержимое и сделать его отличным от страниц, отображаемых в ОЗУ.Эти страницы в оперативной памяти распределяются между всеми процессами, которые создали представление для файла.Опция 'tear off' отсутствует.

Вы можете просто отобразить файл и сделать копию байтов в представлении.Обычно требуется некоторая синхронизация с другими процессами.

...