Я очень новичок в файлах с отображением памяти, и я немного потерялся в чем-то.
Я знаю, что если бы у меня был файл, я мог бы загрузить его и получить к нему доступ из разных процессов сразу с помощью MMaps.
Но в моей ситуации я создаю DLL, прикрепленную к процессу A, и этой DLL был присвоен указатель на cSurface, подготовленный процессом A. Мне нужно поделиться данными этого cSurface с процессом B. Я действительно не хочу вызывать пустой MMap и копировать в него поверхность моего процесса A только для того, чтобы снова скопировать ее в процессе B.
Можно ли сопоставить мою поверхность, как если бы это был файл, чтобы MMap уже указывал на данные поверхности при ее создании (как если бы я загружал SomeTextFile.txt)?
Мой план, теоретически, состоял бы в том, чтобы получить указатель на поверхность в Proc A, указать окнам совместно использовать память этой поверхности с заданным именем и использовать мьютексы для координации доступа — идея в том, что оба процесса считывают одну и ту же физическую копию поверхность без громоздкого копирования.
Это возможно?
char buffer[SUPER_MASSIVE]
и огромный файл с именемhSuperMassiveFile
. Я мог бы поделиться SuperMassiveFile, выполнивCreateFileMapping( hSuperMassiveFile, ... )
, но я хотел бы сделать то же самое со своим буфером. Есть ли способ вместо этого сделатьCreateFileMapping( (HANDLE) buffer, ...)
и поделиться моим буфером без необходимости запрашивать пустую карту, а затемCopyMemory()
в нее мой буфер? - person Chris D   schedule 12.01.2012