wince Hive注册表实现机制

WinCE下的注册表可以分为两种,一种是RAM based,另外一种是HIVE based了.这要根据你在PB里添加的是哪种配置. 用PB向导新建的WinCE工程文件默认会用RAM based. Hive 注册表可以实现掉电不丢失数据.那它是如何实现这种机制的呢. RAM based 注册表因为是把信息保存在内存中的,所以掉电之后信息会丢失(现在有很多消费电子类产品用后备电池在主电源切断后继续给内存供电以实现保存数据). Hive的机制就是把注册表放在磁盘里的保存,这样就可以做到掉电不丢失数据. 磁盘可以是SD卡或flash等设备. 但是这样我们会马上想到一个问题,加载这些磁盘的驱动也是要读注册表的,好像遇到了鸡生蛋,蛋生鸡的问题. 微软解决这个问题的方法是把注册表分为两部分,第一个叫做boot.hv注册表. 里面放加载保存到磁盘上那部分注册表之前要引导的一些设置,比如磁盘的驱动信息. 

Wince下设置hive注册表的方法,网上有不少, 我下面的这篇文章都是前人的成果,以及我在msdn上查到的一些相关资料, 我在板子上实际操作验证过. 

下面所有的操作都是在platform.reg下的完成的. 

1. Add the Hive-based Registry Catalog item to your OS design. 


2. 保证将包含系统HIVE的文件系统驱动程序的注册表信息和存储设备的驱动程序的注册表信息包含在下面的命令中.

; HIVE BOOT SECTION

<your registry settings>

; END HIVE BOOT SECTION

这句话的意思是, 下面所有的设置都必须包含在

; HIVE BOOT SECTION

; END HIVE BOOT SECTION

这两行语句中, 你不要以为它已经注释掉,不起作用了. 前面提到为了实现hive,

注册表被分成了两部分, 一部分是boot.hv,包含在这两行语句的配置,就是这个所谓的boot.hv了. 


3. Verify the following registry settings in the Platform.reg file for your OS design. 

[HKEY_LOCAL_MACHINE\init\BootVars]

"SystemHive"="<your system hive location>"

"Start DevMgr"=dword:<your value>

"DefaultUser"="<username>"//这个一般设置成default就行了.

  "RegistryFlags"=dword:1

下面对各个项做解释. 

如果你用"Documents and Settings\\system.hv", hiv e注册表会保存在\HDD\Documents and Settings\system.hv, 所以,如果你想它保存在flash, 就要"SYSTEMHIVE"="NAND Flash\\system.hv" 或者 "SYSTEMHIVE"=” system.hv"(在platform.reg里设置, 如果是第二种写法, 系统会根据其它注册表的键值判断文件系统的类型)


Start DevMgr这个值决定了,加不加载device.exe, 一般情况下,都是把hive注册表放在ram外, 所以要加载, 所以一般为1

"DefaultUser" Set the following registry value in the Platform.reg file for your OS design to determine the default hive to load. 

"RegistryFlags “ HIVE注册表也是在内存中运行的,不同的是启动的时候会从磁盘上去读改动的表项,因为这样才能保证速度,所以你做的的注册表改动也是在内存中做的,这个时候如果你不掉用FlushRegister去将内存中的数值保存到磁盘上那么这些改动还是会丢失的。正常情况下,CE能够保证重要的注册表数据能够从内存刷到(Flush)永久存储器上。但是这并不能完全保证所有数据都能完整地保存而不丢失,所以要保证万无一失,应该主动地调用RegFlushKey函数强制将内存中的数据刷到永久存储器上。这个函数的参数只有一个,就是注册表分支。CE还增加一个上面registryFlags这个注册表项它的作用是每当函数RegCloseKey被调用时都自动调用RegFlushKey函数。  


4 Set the following flag bit on each driver that is loaded during the first boot phase. 

[HKEY_LOCAL_MACHINE\Drivers\...]

"Flags"=dword:1000

这个标志是一个位掩码,它可以和其它已经存在的"Flags"或运算。值1000表示此驱动程序只加载一次,这样device.exe就不会把当前驱动程序加载两次了。 如果是要把注册表保存在flash里, 在nandflash的相关驱动中添加"flags"=dword:1000. 举个例子:

[HKEY_LOCAL_MACHINE\Drivers\BlockDevice\FlashDrv]

  "Prefix"="DSK"

  "Dll"="FLASHDRV.dll"

  "Order"=dword:0

  "Ioctl"=dword:4

  "Profile"="FlashDrv"

  "FriendlyName"="MS Flash Driver"

  "MountFlags"=dword:11

  "BootPhase"=dword:1

  "Flags"=dword:1000

  

5. Set the MountFlags registry value equal to DWORD:2. 

Set this value on the Storage Manager profile of the file system driver for the medium that contains the registry. This indicates that the file system contains the following registry key. 

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\<ProfileName>\<FileSystemName>]

"MountFlags"=dword:2

//比如,如果是放在nand flash中, 路径就应该是这样的.

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\NandMSFlash\FATFS]

当然,最后一项说明用的文件系统是FAT, 如果你用bins作为文件系统, 就是下面这样

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\NandMSFlash\BINS]

如果是放在硬盘里, 路径是这样的.

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\HDProfile]

虽然pb5.0的关于hive的帮助中说在相关的注册表项中添加mountflag=dword:2,但mountflag的值在ce5.0下是忽视的,具体查看相关文档。所以要使"MountAsBootable"=dword:1, 实际做的时候,先用mounflag,如果不行就用mountasbootable.


下面是一个可用的hive注册表的配置:

;------------------------------HIVE---------------------------------------

; HIVE BOOT SECTION

[HKEY_LOCAL_MACHINE\init\BootVars]

   "SYSTEMHIVE"="system.hv"

   "Start DevMgr"=dword:1

   "RegistryFlags"=dword:1


[HKEY_LOCAL_MACHINE\init\BootVars]

   "DefaultUser"="default"


[HKEY_LOCAL_MACHINE\Drivers\BlockDevice\FlashDrv]

  "Prefix"="DSK"

  "Dll"="FLASHDRV.dll"

  "Order"=dword:0

  "Ioctl"=dword:4

  "Profile"="FlashDrv"

  "FriendlyName"="MS Flash Driver"

  "MountFlags"=dword:11

  "BootPhase"=dword:1

  "Flags"=dword:1000


[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\FlashDrv]

  "DriverPath"="Drivers\\BlockDevice\\FlashDrv"

  "LoadFlags"=dword:1

  "MountFlags"=dword:11

  "BootPhase"=dword:1

  "Flags"=dword:1000


[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDrv]

  "DefaultFileSystem"="FATFS"

  "PartitionDriver"="mspart.dll"

  "AutoMount"=dword:1

  "AutoPart"=dword:1

  "AutoFormat"=dword:1

  "Folder"="ResidentFlash"

  "Name"="Microsoft Flash Disk"

  "BootPhase"=dword:0

  "Flags"=dword:1000


[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDrv\FATFS]

  "FriendlyName"="FAT FileSystem"

  "Dll"="fatfsd.dll"

  "Flags"=dword:00280014

  "Paging"=dword:1

  "CacheSize"=dword:0

  "EnableCacheWarm"=dword:0

  "EnableCache"=dword:1

  "MountFlags"=dword:2

; END HIVE BOOT SECTION

;------------------------------HIVE---------------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435945.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html中点击照片时放大缩小,基于jquery实现一张图片点击鼠标放大再点缩小

. 代码如下:var isopen false;var newImg;var w 200; //将图片宽度200var h 200; // 将图片高度 200$(document).ready(function(){$("img").bind("click", function(){newImg this;if (!isopen){isopen true;$(this).width($(this).width() w);$(th…

css入门之head区设置

收藏夹小图标 如果你将本站加入收藏夹&#xff0c;可以看到在收藏夹网址之前的IE图标变成了本站特别的图标。要实现这样效果很简单&#xff0c;首先制作一个16x16的icon图标&#xff0c;命名为favicon.ico&#xff0c;放在根目录下。然后将下面的代码嵌入head区&#xff1a; &l…

初识WINCE的HIVE注册表

要点&#xff1a;1、WINCE5.0的注册表共分为两类&#xff0d;&#xff0d;RAM based及HIVE based&#xff1b;2、RAM based注册表特点是在内核启动时&#xff0c;被释放到内存&#xff0c;用户可以修改&#xff0c;但由于是基于内存的方式&#xff0c;所以在系统掉电后&#xf…

【转】Dicom基础知识

DICOM 文件可以大致分为两部分&#xff1a; 一部分&#xff1a;与 图像 相关 的 元 信息 &#xff0c;包括患者信息&#xff0c;检查信息&#xff0c;序列信息&#xff0c;图像信息等等。 另一部分&#xff1a;图像的像素数据。 在解析DICOM文件中的像素数据的时候&#xff0c;…

04751计算机网络安全讲解,【19份】04751计算机网络安全自考试卷_历年真题自考答案及解析_湖南080901计算机科学与技术(原B080702计算机及应用)专业-自考生资料网...

1、资料如何使用本商城提供资料为WORD版&#xff0c;可打印成纸质版&#xff0c;结合备考习惯&#xff0c;营造考试氛围。支持手机查看&#xff0c;随时随地&#xff0c;高效学习。WORD文档也可直接用于电脑端学习&#xff0c;快速浏览&#xff0c;永久使用。2、文档无法编辑&a…

湖北省汉十高速公路项目接近尾声,所想所感真的值得写写

湖北省汉十高速公路的项目是我接的第一个B/S结构的软件项目&#xff0c;总体感觉吧&#xff1a;有点粗糙。虽然基本功能已经实现。想来不经意的来了一个公司竟然还能做一个这样的项目。前前后后2个月的开发周期&#xff0c;也让我感到做此类项目&#xff0c;需要你的技术点很多…

WINCE恢复默认HIVE注册表的方法

当Wince使用了HIVE注册表后&#xff0c;每次用户的注册表改动将得到保存&#xff0c;但是在某些应用场合需要将注册表还原成为出厂的默认设置&#xff0c;通常要求能够在AP中通过点击一个按钮来实现这种clean boot。使用我前面的文章的方法配置的HIVE系统注册表和HIVE用户注册表…

【转】DICOM协议新手入门资料-DICOM协议详细解释!!

转自&#xff1a;https://blog.csdn.net/zhuwei0710/article/details/82620036 数字影像传输标准协议的初衷&#xff0c;是为了在不同厂商生产的数字影像设备之间实现影像及其附属信息的调用。这个标准的最初版本是所谓ACR&#xff08;美国放射学会&#xff09;-NEMA&#xff…

博士期间要注意的几个问题

博士期间要注意的几个问题 读博士是一件非常艰苦和漫长的过程&#xff0c;相信在经历了博士期间的洗礼&#xff0c;一个人的思想会得到升华&#xff0c;视野会得到拓宽&#xff0c;人生会更加充实和丰富&#xff0c;为以后的人生打好了坚实的基础&#xff01; 在博士期间&#…

html设置页面编码gbk,GBK及UTF-8网页编码定义与应用

网页编码英文译为web page encoding&#xff0c;是在网页中指定其特定的字符编码格式的库。GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的&#xff0c;即不论中、英文字符均使用双字节来表示&#xff0c;为了区分中文&#xff0c;将其最高…

VxWorks常用的命令

1&#xff0e;与任务相关的命令 sp function,[arg1],...,[arg9] &#xff0d;启动任务&#xff0c;最多接受9个参数&#xff0c;默认的优先级100、堆栈20000字节 period n,function,[arg1],...,[arg8] &#xff0d;创建一个周期调用function的任务&#xff0c;周期为n秒&#x…

【转】Wireshark网络抓包(三)——网络协议

转自&#xff1a;https://www.cnblogs.com/strick/p/6262284.html 一、ARP协议 ARP&#xff08;Address Resolution Protocol&#xff09;地址解析协议&#xff0c;将IP地址解析成MAC地址。 IP地址在OSI模型第三层&#xff0c;MAC地址在OSI第二层&#xff0c;彼此不直接通信…

jquery技巧总结-转载

jquery技巧总结一、简介1.1、概述随着WEB2.0及ajax思想在互联网上的快速发展传播&#xff0c;陆续出现了一些优 秀的Js框架&#xff0c;其中比较著名的有Prototype、YUI、jQuery、mootools、Bindows以及国内的JSVM框架等&#xff0c;通过将这些JS 框架应用到我们的项目中能够使…

川农计算机网络题库,川农网院20秋《计算机网络》期末机考

《计算机网络》期末机考, j9 g5 q- D# p w1.[单选题] 般在10M或100M局域网中&#xff0c;至少要用双绞线多少蕊( ) p2 N: n5 g d A.6) p. a5 B& d2 Z7 l B.104 ^5 l$ 0 C" j& L f# \& " \1 Y C.8, |6 j: y) F2 }; }$ kD.43 o I U$ S0 ) c/ |;…

Vxworks系统学习之一----任务

1.任务队列 vxworks维护4个队列&#xff1a; tick队列 ready队列 active队列 pend队列 一&#xff0c;tick队列 当执行taskDelay时&#xff0c;任务会被延长一段时间执行&#xff0c;此时&#xff0c;任务就会被加入到tick队列中&#xff0c;任务处于Delay状态&#xff…

【转】Wireshark网络抓包(四)——工具

转自&#xff1a;https://www.cnblogs.com/strick/p/6344486.html 一、基本信息统计工具 1&#xff09;捕获文件属性&#xff08;Summary&#xff09; 1. File&#xff1a;了解抓包文件的各种属性&#xff0c;例如抓包文件的名称、路径、文件所含数据包的规模等信息 2. Tim…

silverlight + wcf(json格式) + sqlserver存储过程分页

silverlight并没有提供现成的分页控件&#xff0c;百度了一圈&#xff0c;也没有发现aspx中好用的类似AspNetPager成熟控件&#xff0c;网上现有的一些分页代码&#xff0c;很多也是基于1.0版本的&#xff0c;silverlight2.0的并不多&#xff0c;自个儿琢磨了一下&#xff0c;发…

什么是指利用计算机和现代,现代计算机一般指什么计算机?

现代计算机一般指通用数字电子计算机&#xff0c;它是当今世界电子计算机行业中的主流&#xff0c;其内部处理的是一种称为符号信号或数字信号的电信号&#xff1b;它的主要特点是“离散”&#xff0c;在相邻的两个符号之间不可能有第三种符号存在。电子计算机分为模拟式电子计…

程序员成长之路

程序员的成长经历往往很相似&#xff0c;大部分的人走过了最前面相同的一段路&#xff0c;而有的人则走得更远。总结自己这些年来的历程&#xff0c;这也许能让年轻的程序员少走一些弯路&#xff0c;成长得更快&#xff1b;或许更好一些&#xff0c;能让大家从中得到一些启发&a…

【转】VS中常用图标提示含义

转自&#xff1a;https://www.cnblogs.com/zhjason/articles/14044190.html 有增删 “类视图”和“对象浏览器”图标 “类视图”和“对象浏览器”显示表示代码实体的图标&#xff0c;如命名空间、类、函数和变量 。 下表展示和描述了图标。 图标描述图标描述图标描述图标描述…