最近在做内存文件映射的东西,有个问题想问一下???
HANDLE hShareFile;
char *lpMapFile;
hShareFile = CreateFileMapping( (HANDLE)0xFFFFFFFF, NULL, PAGE_READWRITE, 
     0, 0x00140000, "share_file" );
lpMapFile = (char*)MapViewOfFile( hShareFile, FILE_MAP_ALL_ACCESS, 0, 0, 0 );创建完了,我该如何往这个内存文件里写东西,还有我在另一个进程里该如何去都这个映射文件里的数据,请各位指教

解决方案 »

  1.   


    创建完后, lpMapFile 就是这个文件的指针. 直接向 lpMapFile 地址写内容即可. 比如, 在开始处写一个100 的整数(32位)值:
    *((int*)lpMapFile) = 100;
    其他进程用 OpenFileMapping 函数打开同一个文件映射对象即可共享受这个文件映射. 
      

  2.   

    呵呵,有回答了。看<核心编程>..
      

  3.   

    strcpy()
    如果想存取一部分数据可通过移动lpMapFile 指针得到
      

  4.   

    创建共享文件
     HANDLE hMapping;   
       LPSTR lpData;   
       
       hMapping=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,0x100,"MYSHARE");   
       lpData=(LPSTR)MapViewOfFile(hMapping,FILE_MAP_ALL_ACCESS,0,0,0);   
     
       sprintf(lpData,"Server Data String");   
       while(strlen(lpData)<20)   
          Sleep(1000); 
       AfxMessageBox("long than 20");
       UnmapViewOfFile(lpData);   访问修改
    hMapping = OpenFileMapping( FILE_MAP_ALL_ACCESS, TRUE, "MYSHARE" );
       data=(char*)MapViewOfFile(hMapping,FILE_MAP_ALL_ACCESS,0,0,0); 
       sprintf(data,"My Client data string that is longer than 20"); 
       UnmapViewOfFile(data); 
       CloseHandle(hMapping);共享文件