关于CreateFileMapping的问题

mymmsc 2006-12-27 09:50:35
问题的现象是这样的,我需要快速的写日志文件,想使用内存映射文件的方式,但是一开始文件长度是0,请教大家,在这种情况下,怎么做?
...全文
915 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mymmsc 2006-12-29
  • 打赏
  • 举报
回复
那不很麻烦,有没有选项能自动调整的?
myadvice 2006-12-27
  • 打赏
  • 举报
回复
同意楼上的,一开始虽然没有文件内容,但是你可以随便指定一个大小,若事后没有写入任何内容你将文件删除掉就可以了。
hjon 2006-12-27
  • 打赏
  • 举报
回复
是不是第一次打开的时候文件长度是0?
如果是这样,你在用CreateFileMapping时,把那个表示文件大小的参数指定一个大小就可以了,不然的话创建映射文件会失败,因为大小为0;
CreateFileMapping(hFile,NULL,PAGE_READWRITE,0,100,NULL);
这个100就是.
xu_yuanjie 2006-12-27
  • 打赏
  • 举报
回复
mark
bachelor2001 2006-12-27
  • 打赏
  • 举报
回复
SendEndOfFile(hFile),应该是SetEndOfFile(hFile)
bachelor2001 2006-12-27
  • 打赏
  • 举报
回复
重新 CreateFileMapping时,参数为新的大小
bachelor2001 2006-12-27
  • 打赏
  • 举报
回复
初始
hFile = CreateFile
hMem = CreateFileMapping (要设定初始大小)
pMem = MapViewOfFile

以后若要增长时,

UnampViewOfFile(pMem)
CloseHandle(hMem)
再重新
CreateFileMapping
MapViewOfFile

最后保存时
UnampViewOfFile(pMem)
CloseHandle(hMem)
SetFilePointer(hFile,...)
SendEndOfFile(hFile)
CloseHandle(hFile)

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧