如何获得二进制文件的句柄?进而进行二进制文件的内存映射

linfengc 2008-11-06 09:41:29
CreateFile貌似只能得到普通文件的句柄。
应该怎么设置参数才能得到二进制文件的句柄呢?

使用OpenFile可以得到二进制文件的HFILE,再进行强制转换为HANDLE就可以得到,
这个HANDLE可以在其他很多函数中使用,如GetFileSizeEx等,
但是这个HANDLE不能使CreateFileMapping成功,怎么回事?

难道二进制文件不能进行内存映射?

另外:大于4G的二进制文件读写,有封装好的代码吗?
...全文
188 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
linfengc 2008-11-07
  • 打赏
  • 举报
回复
是我测试不够。
确实能得到。
我的二进制文件有只读属性,而我CreateFile时带了GENERIC_WRITE,所以导致打开失败。

用内存映射实现大二进制文件的随即读写确实很方便。
jia_xiaoxin 2008-11-06
  • 打赏
  • 举报
回复
CreateFile什么文件的句柄都能得到,无论是文本还是二进制。
将CreateFile返回的句柄用ReadFile()打开,就可读出文件的内容。
nhycf 2008-11-06
  • 打赏
  • 举报
回复
你把代码贴出来,让大家看看有什么问题
cdef9108 2008-11-06
  • 打赏
  • 举报
回复
CreateFile()是可以创建2进制文件的。


The CreateFile function creates or opens a file, directory, physical disk, volume, console buffer, tape drive, communications resource, mailslot, or pipe. The function returns a handle that can be used to access the object.
linfengc 2008-11-06
  • 打赏
  • 举报
回复
ls没看清我的叙述啊。
nhycf 2008-11-06
  • 打赏
  • 举报
回复
应该使用CreateFile,不要使用OpenFile(这个函数有些限制)
CreateFile不会判断是不是二进制文件

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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