В моем проекте я реализовал концепцию CreateFileMapping
для разделения памяти между двумя процессами. У меня есть серверный процесс, в котором я храню адрес памяти моих данных сеанса, который содержит детали о конкретном изображении. И у меня есть клиентский процесс, в котором я читаю этот адрес из буфера. Теперь проблема в том, что адрес отображается в клиентском процессе, но некоторые детали отсутствуют.
Это код процесса моего сервера:
HANDLE hMem;
LPCSTR pBuf;
#define BUF_SIZE 1024
static const char MemoryName[]="Share Memory Name";
hMem=CreateFileMapping(INVALID_HANDLE_VALUE,NULL, PAGE_READWRITE,0, BUF_SIZE, MemoryName);
pBuf = (LPCSTR) MapViewOfFile(hMem, FILE_MAP_ALL_ACCESS, 0, 0, BUF_SIZE);
CopyMemory((PVOID)pBuf, session, BUF_SIZE);
LtEntity test = LtEntity(pBuf);
Это мой код процесса клиента:
HANDLE hMem;
LPCSTR pBuf;
#define BUF_SIZE 1024
static const char MemoryName[]="Share Memory Name";
hMem = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, MemoryName);
pBuf = (LPCSTR) MapViewOfFile(hMem, FILE_MAP_ALL_ACCESS, 0, 0, BUF_SIZE);
LtEntity test = LtEntity(pBuf);
В процессе сервера переменная «test» содержит все детали, но в клиенте «test» отсутствуют некоторые данные.
Тестовая переменная сервера ниже показывает прикрепленное изображение, которое показывает содержимое переменной.
Тестовая переменная клиента ниже показывает прикрепленное изображение, которое показывает содержимое переменной.
Пожалуйста, проверьте разницу, мне нужны данные элемента, также видимые в моем клиентском процессе.