Можно ли увеличить размер разделяемой памяти после создания с помощью API «CreateFileMapping»? - PullRequest
0 голосов
/ 31 октября 2011

Я разделяю данные памяти между несколькими процессами в соответствии с проектом.

В соответствии с проектом приложению требуется несколько файлов памяти, как для каждого процесса требуется один файл карты памяти.Но некоторым процессам требуется меньше отображаемого файла памяти, например, он может быть 10 КБ или меньше.и некоторые процессы требуют более 1 МБ памяти.как только задача процессов закончится, я буду использовать тот же файл отображения памяти для какого-то другого процесса.

В этом сценарии, как я могу увеличить размер файла отображения памяти на основе запроса процесса.Как когда-то я создаю отображенный в память файл, используя CreateFileMapping.Как я могу увеличить размер памяти или уменьшить размер.

также у меня есть еще один дополнительный вопрос, как очистить эти данные, не закрывая этот файл отображения памяти.Пожалуйста, поделитесь, если кто-нибудь знает.

большое спасибо заранее.хара

Ответы [ 2 ]

1 голос
/ 31 октября 2011

Вы можете сделать это.См. NtExtendSection .

0 голосов
/ 31 октября 2011

Нет - вы не можете увеличить отображение после создания (см. http://msdn.microsoft.com/en-us/library/windows/desktop/aa366537%28v=vs.85%29.aspx)!

Размеры, которые вы описываете, не кажутся проблематичными, поэтому я бы просто выбрал один "достаточно большой размер".

Для очистки данных вы можете использовать, например, memset () (см. http://msdn.microsoft.com/en-us/library/1fdeehz6.aspx или http://www.cplusplus.com/reference/clibrary/cstring/memset/) или ZeroMemory() (что является просто сопоставлением макроса Windows API для memset).

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