关于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]