wince内存映射技术

wince内存映射技术

ID:12281964

大小:33.50 KB

页数:4页

时间:2018-07-16

wince内存映射技术_第1页
wince内存映射技术_第2页
wince内存映射技术_第3页
wince内存映射技术_第4页
资源描述:

《wince内存映射技术》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、2008年08月06日星期三15:121.用途和基本操作   用于不同进程之间的内存共享操作,可以将一个物理文件映射到内存当中然后直接利用分配到的或者打开的命名共享内存的地址空间实现资源共享访问2.相关流程1)新建命名共享内存   首先利用CreateFile或者CreateFileForMapping获得一个用于映射的物理文件句柄,然后利用该文件句柄结合CreateFileMapping得到一个命名的共享内存映射文件句柄2)打开命名共享内存   如果需要共享已经存在的命名共享内存映射文件,使用OpenFileMapping函数3)获得地址空间指针   进行内存映射文件的读写和

2、一般的文件读写不同,是直接面对你申请的地址空间,为此需要使用MapViewOfFile得到相关的地址LPVOID类型的指针.   如果需要进行文件写入,可以通过类型转换直接对于内存地址进行赋值,比如:   memcpy(lpAddress,lpBuf,....)   这里自然需要防止内存溢出的情况   如果是读取操作,呵呵将参数顺序调整一下就可以了4)将内存复制到所映射的物理文件上面   FlushMapViewOfFile函数可以将内存里面的内容DUMP到物理磁盘上面5)卸载内存映射文件地址指针   UnmapViewOffFile函数就是卸载6)关闭内存映射文件   太简单

3、了,CloseHandle搞定2.相关背景   其实内存映射技术本身没有什么难度,关键在于共享内存映射的使用上面,特别是进行不同进程之间的同步,尤其是如果该内存映射是跨机器的情况下,你需要考虑不同的异常情况.详解(付林林)  与虚拟内存一样,内存映射文件用来保留一个地址空间,并提交物理存储器。早期的内存映射文件并不是提交物理内存供调用者使用,而是提交永久存储器上的文件数据。当然操作系统会为永久存储器保留一个读缓冲区,这样读取文件数据就快多了。内存映射文件的特点使它很适合于加载EXE或DLL文件。这样可以节省内存又减少了加载所需时间。还可以使用它来映射大容量的文件,这样就不必在读

4、取文件数据前设置很大的缓冲区。另外内存映射文件常用于进程间通信,也是进程间通信的主要手段,其它进程之间通信机制都是基于内存映射文件来实现。为了更快的在进程之间通信,现在的内存映射文件也可以提交物理内存,这样内存映射文件既可以提交物理内存又可以提交文件。  WindowsCE.NET同样支持无名和有名的内存映射文件。我建议在开发软件的过程中,如果需要读写大容量的文件,或者需要在不同进程内的线程之间通信,最好采用内存映射文件,而且最好在全局地址空间内(0x42000000到0x7FFFFFFF)分配。这会使我们事半功倍。1映射数据文件  第一步:调用CreateFileForMap

5、ping函数。在WindowsCE.NET中推荐使用这个函数替代CreateFile函数。CreateFileForMapping函数由内核执行并创建文件,它也可以打开由CreateFile函数创建的文件。其参数同CreateFile相似。参数1指定文件路径,注意文件路径的格式是没有盘符的,参数2指定访问方式(读或写),参数3指定共享模式,参数4指定安全属性(必须设置为NULL),参数5指定是创建还是打开文件,参数6指定文件属性,参数7忽略。具体参数细节参见WindowsCE.NET帮助。函数返回创建或者打开的文件的句柄。  第二步:调用CreateFileMapping函数。

6、这个函数创建一个无名的或者有名的内存映射文件对象。参数1为文件句柄。这个值由CreateFileForMapping函数返回。参数2为安全属性(必须设置为NULL),参数3指定要映射的文件的保护属性(只读或者读写),参数4和参数5共同用于指定要映射的文件的大小。文件的容量过大将导致32位整数也不能表示,所以这里用64位变量表示,其中参数4为高32位数,参数5为低32位数。最后一个参数指定内存映射文件的名称。这里可以设置为NULL,表示不需要名字。  第三步:调用MapViewOfFile函数。这个函数用于保留一段足够的地址空间,并且将永久存储器上的文件数据映射到这个地址空间。映

7、射后这段地址空间又叫做文件视图,映射范围可以是全部文件,也可以是部分文件。这里需要注意的是如果文件很大,那这个函数将在全局地址空间内分配地址空间。参数1指定内存映射文件对象的句柄,这个值由CreateFileMapping函数返回。参数2和CreateFileMapping函数中参数3很相似,都是用于限定访问权限。参数3和参数4共同用于指定映射区域的开始位置。其中参数3为高32位数,参数4为低32位数。参数5指定映射区域的大小。需要注意的是参数3和参数4指定的64位数开始位置可以不是64KB

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。