我想向内存映射文件写数据。我执行了下面语句:
DWORD dw;
char stmp[100];
LPCVOID lpv;
BOOL rbl;
HANDLE hMFile;hMFile=NULL;
hMFile=CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,10240,"m_f");
LPSTR pszM=(LPSTR)MapViewOfFile(hMFile,FILE_MAP_WRITE|FILE_MAP_READ,0,0,0);
dw=0;
sprintf(stmp,"123456");
lpv=(LPCVOID)(&stmp[0]);
rbl=FALSE;
rbl=WriteFile(hMFile,lpv,5,&dw,NULL);执行完后,WriteFile(hMFile,lpv,5,&dw,NULL)的返回值为0即FALSE。
这是为什么?是什么地方写错了?

解决方案 »

  1.   

    都mapping了,就不要用WriteFile,直接memcpy(pszM,stmp,5);就把stmp的内容写入文件。
      

  2.   

    See the samples below, FYI: http://www.codeproject.com/win32/cmemmap.asp
    http://www.codeproject.com/useritems/sharedmem_jni.asp
    http://www.codeproject.com/threads/sharedmemipc.asp
      

  3.   

    u can find relative contents via MSDN ,just paste a snippet 
    File Mapping Functions
    The following functions are used with file mapping.   
     
    CreateFileMapping  
    FlushViewOfFile  
    MapViewOfFile  
    MapViewOfFileEx  
    MapViewOfFileVlm  
    OpenFileMapping  
    UnmapViewOfFile   
    UnmapViewOfFileVlm