VC下学习内存映射文件笔记

来源:互联网 发布:淘宝买iphone 编辑:程序博客网 时间:2024/06/05 11:13

想让多个程序通过内存映射文件进行数据共享,则应该在每一个程序中都创建内存映射文件:

一.在程序中定义以下变量:

HANDLE hFileMapping = NULL;

二.创建内存映射文件:

hFileMapping = CreateFileMapping((HANDLE)0xFFFFFFFF, NULL, PAGE_READWRITE, 0, 100, "MemoryFile");

三.往内存映射文件写数据:

 LPVOID FilePointer = MapViewOfFile(hFileMapping, FILE_MAP_WRITE, 0, 0, 0);
 if (FilePointer == NULL) {
      MessageBox("获取内存映射文件指针失败。", "提示", MB_OK);
      return;
 }
 UpdateData(TRUE);
 ::lstrcpy((char*)FilePointer, (LPCSTR)m_edit_srcdata);
 UnmapViewOfFile(FilePointer);
 if (FilePointer != NULL) {
     MessageBox("Memory File Written.", "Info", MB_OK);
 }

四.从内存映射文件读数据:

 LPVOID FilePointer = MapViewOfFile(hFileMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0);
 if (FilePointer == NULL) {
     MessageBox("获取内存映射文件指针失败。", "提示", MB_OK);
    return;
 }
 m_edit_memdata = (char*)FilePointer;
 UnmapViewOfFile(FilePointer);
 UpdateData(FALSE);