在Windows CE中创建和映射MMF的过程中,MMF的地址空间确切被阻止了。是在创建MMF期间还是在映射视图时?只有在虚拟地址空间中存在x(在创建期间指定)的连续空间时,创建才会成功吗?
其次,是否可以像在win32中那样在win CE中映射文件的一部分。如果我创建一个0x8000字节的MMF并映射文件的视图,给出0x5000的偏移量和0x7000的大小,则映射失败。它说INVALID_PARAMETER。虽然当视图的偏移量和大小之和小于0x8000时允许映射。是否总是从文件的开头映射?
答案 0 :(得分:1)
在Windows Mobile 6.x(CE 5.0)中,内存映射文件存储在虚拟地址空间中0x42000000以上的Large Memory Area中。
是的,您需要连续的空间才能成功分配MMF。
0x5000 + 0x7000 = 0xC000。这大于0x8000字节的分配空间。
-PaulH
修改强>
此外,系统分配粒度的偏移量must be a multiple。使用GetSystemInfo
查找该值。例如,在我拥有的一台设备上,它是0xa11字节。