CreateFileMapping( ) 有限制大小 至少 要多少吗 ?

quickcccc 2009-04-15 12:03:41
CreateFileMapping(-1, ByVal 0&, PAGE_READWRITE, 0&, 100 , "test")

如上 只有配置 100 可以吗 ? ( 配置这么小 可以接续呼叫 MapViewOfFile() 吗 ??)

我看网路上范例 "至少" 都写 65535

==========

另外看到 API 中文说明写到关于 MapViewOfFile() 的 2个参数 , 提到至少要 64K

dwFileOffsetHigh Long,文件中映射起点的高32位地址
dwFileOffsetLow Long,文件中映射起点的低32位地址

[注解]
dwFileOffsetLow和dwFileOffsetHigh必须反映一个偏移距离,它由系统的内存分配精度决定。
例如,假设系统的内存精度是64KB(即最小分配单位是64KB),则这些值必须是64KB的整数倍。
大多数应用程序都简单的用零从文件的起始处开始映射。lpBaseAddress也必须是内存分配精度的整数倍

...全文
884 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
IORI915189 2009-06-13
  • 打赏
  • 举报
回复
没有的事 1字节都可以

如果你的文件是 100M
你CreateFileMapping 写50M的话 那么MapViewOfFile 也只能到文件的前50M

dwFileOffsetHigh
dwFileOffsetLow

这两个DWORD值 你可以直接申明成一个 LARGE_INTEGER类型
用INT64类型进行运算 需要时 memcpy到LARGE_INTEGER类型里 就可以了

CreateFileMapping 一般情况 没有大小限制
但MapViewOfFile 应该注意 值不能大太 建议是128M左右 根据实际情况而定

因为系统是32位的 CPU只能寻址到2的32次方
每个进程 最大也只有4G虚拟内存 并且还有高2G的核心内存

所以MapViewOfFile 在满足自己需要的前提下 是越小越好吧 用完记的一定要UnmapViewOfFile

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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