Файлы с отображенной памятью - Как вставить полосу данных в другой процесс - PullRequest
2 голосов
/ 15 февраля 2011

Мой файл (sample.txt) имеет 10 символов.Я открыл файл в режиме записи, сделал createfilemapping("mymapping").Тогда я задерживаю процесс по getchar.Затем открыл другой процесс, который выполняет ниже

openfilemapping("mymapping"),
char*k =  (char*)mapviewoffile 

Теперь я могу получить доступ к значению sample.txt и изменить его с помощью k.Тем не менее, как вставить / добавить полосу еще 10 символов в файл.

1 Ответ

3 голосов
/ 15 февраля 2011

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

Кроме того, это необычно (но, конечно, не незаконно) использовать сопоставления именованных файлов, подкрепленные дисковыми файлами.Как правило, если вы отображаете реальный файл, вы должны передать NULL параметру lpName CreateFileMapping.Вы передадите имя, когда захотите создать отображение совместно используемой памяти без резервного файла, то есть hFile будет NULL, а lpName будет именем сегмента совместно используемой памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...