CNET中国旗舰网站
ZDNet China
|
CNET科技资讯网
|
政府采购
|
行业网站联盟
ZDNet China 至顶网是中国最大的企业级IT资源门户
首页
网络安全
存储
服务器
软件
桌面产品
开发
企业管理
白皮书
中小企业
新闻
下载
社区
企业网
无线网
过滤防护
安全管理
网络存储
磁带库/VTL
数据保护
光存储
X86服务器
虚拟化
小型机
操作系统
数据库
中间件
协作办公
手机
笔记本
数码相机
C/S开发
web开发
移动开发
web软件
应用软件
博客
论坛
搜索
搜索
高级搜索
用户登录
用户名:
密码:
登录
新用户注册
社区首页
未证实消息
桌面产品
软件
开发
网络与安全
服务器
存储
下载
苹果爱好者
中小企业
活动专区
病毒/木马
新知天下
CWEEK专属社区
悬赏问答
游客:
注册
|
登录
|
会员
|
搜索
|
论坛设施
|
帮助
ZDNetChina中文社区
»
操作系统
»
嵌入式操作系统
» 编写Windows CE之映射
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题:
[分享]
编写Windows CE之映射
teresadown
银牌会员
UID 245904
精华
1
积分 2465
帖子 220
威望 859
ZD币 253 元
阅读权限 100
注册 2007-7-24
状态 离线
楼主
使用道具
发表于 2008-6-18 11:40
资料
个人空间
短消息
加为好友
开发者在线
编写Windows CE之映射
Windows CE
同样支持无名和有名的内存映射文件。在开发软件的过程中,如果需要读写大容量的文件,或者需要在不同进程内的线程之间通信,最好采用内存映射文件,而且最好在全局地址空间内(
0x4200 0000
到
0x7FFF FFFF
)分配。这会事半功倍。
嵌入式系统采用两级页表的方式进行虚实地址变换,这与所用的处理器有关。比如
ARM
平台下,有
1MB
,
64KB
,
4KB
,
1KB
四种页面大小;
X86
下则是
4KB
和
4MB
。
Windows CE
提供内置的轻量级数据库管理系统。其属性数据库由
1
张包含记录的表组成,每个记录包含许多不同的属性,每个属性有
3
种信息:标志属性的
ID
号、类型和值。
全局地址空间(
0x4200 0000
到
0x7FFF FFFF
)近
1GB
的空间应该足够用了。毕竟
Windows CE
下的文件都很小。
实现地址映射的思路:
l
分析逻辑地址,包括页号和页内偏移地址;
l
查找页表,即物理页面;
l
合成实际物理地址,物理地址
=
物理页面
*2
的
N
次方
+
偏移地址;
l
映射数据文件的基本步骤:
1
、调用
CreateFileForMapping
函数。
l
参数
1
:指定文件路径,注意文件路径的格式是没有盘符的;
l
参数
2
:指定访问方式(读或写);
l
参数
3
:指定共享模式;
l
参数
4
:指定安全属性(
NULL
);
l
参数
5
:指定是创建还是打开文件;
l
参数
6
:指定文件属性;
l
参数
7
:略;
2
、调用
CreateFileMapping
函数。
创建一个无名的或者有名的内存映射文件对象。
l
参数
1
:函数返回值;
l
参数
2
:安全属性(
NULL
);
l
参数
3
:指定要映射的文件的保护属性(只读
OR
读写);
l
参数
4
:指定要映射的文件的大小,最高
32
位数;
l
参数
5
:与参数
4
共同用于指定要映射的文件的大小,最低
32
位数;
l
参数
6
:指定内存映射文件的名称(
NULL
);
3
、调用
MapViewOfFile
函数。
用于保留一段足够的地址空间,并且将永久存储器上的文件数据映射到这个地址空间。
l
参数
1
:指定内存映射文件对象,函数返回值;
l
参数
2
:用于限定访问权限;
l
参数
3
:指定映射区域的开始位置,最高
32
位数;
l
参数
4
:和参数
3
共同用于指定映射区域的开始位置,最低
32
位数。
4
、进行读
/
写操作;
(前提是调用
MapViewOfFile
函数成功)
5
、调用
UnmapViewOfFile
函数。
撤销文件映射视图,执行结束。
l
参数
1
:指定视图首地址;
6
、调用
CloseHandle
函数。
关闭内存映射文件对象。
映射文件与虚拟内存一样,内存映射文件用来保留一个地址空间,并提交物理存储器。
内存映射文件的特点使它很适合于加载
EXE
或
DLL
文件。这样可以节省内存又减少了加载所需时间。还可以使用它来映射大容量的文件,这样就不必在读取文件数据前设置很大的缓冲区。
另外,内存映射文件常用于进程间通信,也是进程间通信的主要手段,其它进程之间通信机制都是基于内存映射文件来实现。
为了更快的在进程之间通信,现在的内存映射文件也可以提交物理内存,这样内存映射文件既可以提交物理内存又可以提交文件。
软件频道
-
操作系统
| 热门关键字:
SharePoint 2007
|
IIS
|
Windows Server 2003
|
WindowsXP SP3
|
Vista
|
Windows 2008
|
Windows Server 2008
|
Windows XP
|
Windows
|
Windows XP
|
Android
|
Linux
|
Windows Server 2008 专题
lolitacool
高级会员
UID 245833
精华 0
积分 705
帖子 94
威望 218
ZD币 85 元
阅读权限 50
注册 2007-7-23
状态 离线
沙发
使用道具
发表于 2008-6-30 17:30
资料
个人空间
短消息
加为好友
Windows CE支持内存分页么?
lolitacool
高级会员
UID 245833
精华 0
积分 705
帖子 94
威望 218
ZD币 85 元
阅读权限 50
注册 2007-7-23
状态 离线
板凳
使用道具
发表于 2008-6-30 17:30
资料
个人空间
短消息
加为好友
Windows CE支持各种CPU和能够以多种方式被配置,每种方式带有一个不同的API,开发环境怎样才能知道目标平台呢?
lolitacool
高级会员
UID 245833
精华 0
积分 705
帖子 94
威望 218
ZD币 85 元
阅读权限 50
注册 2007-7-23
状态 离线
地毯
使用道具
发表于 2008-6-30 17:30
资料
个人空间
短消息
加为好友
静待高手解答,谢谢~
teresadown
银牌会员
UID 245904
精华
1
积分 2465
帖子 220
威望 859
ZD币 253 元
阅读权限 100
注册 2007-7-24
状态 离线
第5楼
使用道具
发表于 2008-6-30 17:31
资料
个人空间
短消息
加为好友
QUOTE:
原帖由
lolitacool
于 2008-6-30 17:30 发表
Windows CE支持内存分页么?
支持。
但是它不支持页面文件以保存辅助设备(如硬盘)的读
/
写型数据。
teresadown
银牌会员
UID 245904
精华
1
积分 2465
帖子 220
威望 859
ZD币 253 元
阅读权限 100
注册 2007-7-24
状态 离线
第6楼
使用道具
发表于 2008-6-30 17:31
资料
个人空间
短消息
加为好友
QUOTE:
原帖由
lolitacool
于 2008-6-30 17:30 发表
Windows CE支持各种CPU和能够以多种方式被配置,每种方式带有一个不同的API,开发环境怎样才能知道目标平台呢?
MS
已经开发了一组
Windows CE
开发工具,某些兼容所有的平台,某些仅支持手持电脑和其他专门的系统。
投票
交易
悬赏
活动