hFile = CreateFile("c:\\1.bmp", GENERIC_WRITE|GENERIC_READ, 0, NULL, CREATE_ALWAYS, 
FILE_ATTRIBUTE_NORMAL, NULL); 
hf2 = CreateFileMapping(hFile, NULL,PAGE_READWRITE,0,m_dwFileSize + sizeof(TCHAR),NULL);
m_pFileData = (LPBYTE)MapViewOfFile(hf2, FILE_MAP_WRITE,0,0,0);
这里的m_pFileData大小好象还是不能达到1.5G.有别的办法吗?我想保存的文件可能有1.5G.改怎么做呢,文件小 返回值为0x025e0000,文件大返回值就为0x00000000  GetLastError() = 8 ,存储空间不足,无法处理此命令。请问高手应该怎么做?

解决方案 »

  1.   

    MapViewOfFile的时候,对于大文件应该分几次来map,设置map的偏移量。
      

  2.   

    MapViewOfFile最后一个参数是0,一次需要映射这么大,效率不高,可以考虑2楼建议dwNumberOfBytesToMap 
    [in] Number of bytes of the file mapping to map to the view. If this parameter is zero, the mapping extends from the specified offset to the end of the section. 
      

  3.   

    如果是FAT32分区,文件最大不超过4GB,而内存映射和虚拟内存有关有关系,不能超过虚拟内存的大小.
      

  4.   

    不可能,你没整明白。
    硬盘可以映射出上T的内存空间,提示你一句,显示卡有那么多的存储空间,知道是怎么映射到物理内存里面的吗?是分段做的,仔细研究MapViewOfFile()的第三、四个参数,不是总为0的。整不明白再问我。