首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

内存映射文件怎么追加写

2012-09-10 
内存映射文件如何追加写?今天弄内存映射文件,发现 新建文件可写、读取大文件也可以,唯独单独的大文件追加写

内存映射文件如何追加写?
今天弄内存映射文件,发现 新建文件可写、读取大文件也可以,唯独单独的大文件追加写,无论如何都没有反应,附上参数配置,求指点


HANDLE hFile =CreateFile(".\\a.txt", GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL);

HANDLE hFileMap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, (DWORD)(nFileSize>>32), (DWORD)(nFileSize& 0xFFFFFFFF), NULL);

PBYTE pbFile = (PBYTE) MapViewOfFile(hFileMap, FILE_MAP_WRITE,(DWORD)(offset >> 32), (DWORD)(offset & 0xFFFFFFFF), nUnit);

[解决办法]
映射之后,直接修改内存中的,CreateFile时指定了FILE_FLAG_WRITE_THROUGH标志的话,会自动写回文件
[解决办法]
CreateFileMapping一旦指定文件映射的大小,在关闭该Mapping之前就无法再改变其大小。必须先关闭之,然后再通过SetFilePointer、SetEndOfFile等函数改变进行追加。

热点排行