VC++6.0共享内存技术总结 - [编程]
VC++6.0共享内存技术总结
程序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[0]=00;
p[1]=11;
p[2]=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[0],p[1],p[2]); //使用共享区
AfxMessageBox(s);
p[0]=33;
p[1]=44; //修改共享区
取消本进程地址空间的映射:
UnmapViewOfFile(m_pBaseMapFile);