如何获取文件的下一页/部分/视图,如果我使用MapViewOfFile读取文件的一部分?

我正在尝试使用函数CreateFileMapping,MapViewOfFile,FlushViewOfFile的组合。

总的缓冲区大小大于映射的视图。 示例缓冲区是50KB。 映射视图是2KB。 在这种情况下,我想使用上述函数将总缓冲区写入物理文件。

第一部分我能够写入文件。 但剩下的部分如何写入文件。 我的意思是,如何移动到下一页并写入下一部分数据。

#define MEM_UNIT_SIZE 100 

– 第一个模块…内存映射创build器

 GetTempPath (256, szTmpFile); GetTempFileName (szTmpFile, pName, 0, szMMFile); hFile = CreateFile (szMMFile, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_TEMPORARY, NULL); HANDLE hFileMMF = CreateFileMapping( hFile ,NULL,PAGE_READWRITE,0, (MEM_UNIT_SIZE),pName) 

第二个模块…内存写入器

  long lBinarySize = 1000; long lPageSize = MEM_UNIT_SIZE; HANDLE hFileMMF = OpenFileMapping(FILE_MAP_WRITE,FALSE,pMemName); LPVOID pViewMMFFile = MapViewOfFile(hFileMMF,FILE_MAP_WRITE,0,0, lPageSize ); CMutex mutex (FALSE, _T("Writer")); mutex.Lock(); try { ASSERT(FALSE); CopyMemory(pViewMMFFile,pBinary,lPageSize); // write FlushViewOfFile(pViewMMFFile,lPageSize); // first 100 bytes flushed to file. //how to move to next location and write next 900 bytes..<---?? } catch(CException e) { ... } 

如果您有任何build议,请分享。 在此先感谢haranadh

Solutions Collecting From Web of "如何获取文件的下一页/部分/视图,如果我使用MapViewOfFile读取文件的一部分?"