进程共享链表

来源:互联网 发布:淘宝网司法拍卖平台 编辑:程序博客网 时间:2024/05/17 02:41

void CTestShareDlg::OnBnClickedWrite()
{
 //创建或获取内存文件句柄
 HANDLE hFile = CreateFileMapping(NULL,NULL,PAGE_READWRITE,0,MEM_SIZE,MEM_SHARE_NAME);
 VOID * pMem = NULL;
 if(hFile != NULL)
 {
  //获取存储的内存地址
  pMem = MapViewOfFile(hFile,FILE_MAP_ALL_ACCESS,0,0,0);

  //设置数据
  std::vector<int> vtStr;
  vtStr.push_back(1);
  vtStr.push_back(2);
  vtStr.push_back(3);
  vtStr.push_back(4);
  memcpy(pMem,&vtStr[0],vtStr.size()*4);
 }

 //如果不再使用,应该关闭句柄
 //CloseHandle(hFile);
}

void CTestShareDlg::OnBnClickedRead()
{
 std::vector<int> vtStr(6,0);
 HANDLE hFile = CreateFileMapping(NULL,NULL,PAGE_READWRITE,0,MEM_SIZE,MEM_SHARE_NAME);
 VOID * pMem = NULL;
 if(hFile != NULL)
 {
  pMem = MapViewOfFile(hFile,FILE_MAP_ALL_ACCESS,0,0,0);
  //读取数据
  
  memcpy(&vtStr[0],pMem,vtStr.size()*4);
 }
 //如果不再使用,应该关闭句柄
 //CloseHandle(hFile);

 CString str;
 str.Format("%d,%d",vtStr[0],vtStr[1]);
 AfxMessageBox(str);
}

原创粉丝点击