内存映射文件怎么追加写
内存映射文件如何追加写?
今天弄内存映射文件,发现 新建文件可写、读取大文件也可以,唯独单独的大文件追加写,无论如何都没有反应,附上参数配置,求指点
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等函数改变进行追加。
今天弄内存映射文件,发现 新建文件可写、读取大文件也可以,唯独单独的大文件追加写,无论如何都没有反应,附上参数配置,求指点
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等函数改变进行追加。