塞翁364 发表于 2024-3-1 14:03:48

关于VC++共享内存技术


程序1 -- 建立共享区:



HANDLE m_hMapFile=CreateFileMapping(//创建一个有名的共享内存
    (HANDLE)0xFFFFFFFF, //0xFFFFFFFF表示创建一个进程间共享的对象
    NULL,
    PAGE_READWRITE,//读写共享
    0,
    0x1000,       //共享区间大小4096
    "myfile");

void* m_pBaseMapFile=MapViewOfFile(//映射到本进程的地址空间
   m_hMapFile,
   FILE_MAP_READ|FILE_MAP_WRITE,
   0,
   0,
   0);

unsigned char *p=(unsigned char*)m_pBaseMapFile;   //使用共享区
p=00;
p=11;
p=22;



程序2 -- 使用共享区

HANDLE m_hMapFile =OpenFileMapping( //获得共享内存句柄
FILE_MAP_WRITE,
FALSE,
"myfile");

void *m_pBaseMapFile=MapViewOfFile( //映射到本进程的地址空间
m_hMapFile,
FILE_MAP_READ|FILE_MAP_WRITE,
0,
0,
0);
unsigned char *p=(unsigned char*)m_pBaseMapFile;   
CString s;
s.Format("%#x: %d, %d, %d",p,p,p,p); //使用共享区
AfxMessageBox(s);
       p=33;
       p=44;//修改共享区

取消本进程地址空间的映射:
UnmapViewOfFile(m_pBaseMapFile);














页: [1]
查看完整版本: 关于VC++共享内存技术