WinApi: разделяйте память между двумя процессами, используя VirtualAlloc - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь выделить часть памяти, которая может быть разделена между двумя процессами с помощью Win API. Я успешно реализовал его, используя CreateFileMapping / OpenFileMapping в сочетании с MapViewOfFile . Тем не менее, я требую, чтобы базовый адрес был согласованным для двух процессов, которые ему не предоставляются с именованной общей памятью. Таким образом, я попытался использовать VirtualAlloc для создания памяти в первом процессе по определенному адресу:

VirtualAlloc((void*)0x80000000LL, 
             65536, 
             MEM_RESERVE | MEM_COMMIT, 
             PAGE_READWRITE);           

Это не сообщает о каких-либо ошибках, и выделенная память используется. Тем не менее, если я попытаюсь получить доступ к памяти в этом конкретном месте во втором процессе:

char c = *((const char*)0x80000000LL);

выдает «Попытка доступа к неверному адресу». Есть ли функция, которую мне нужно вызвать во втором / первом процессе, чтобы сделать область памяти доступной для чтения / записи или изменить разрешение?

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