蜂窝注册表和永久存储

WindowsCE有两种注册表,一种是基于RAM的,一种是基于蜂窝的注册表;WindowsCE会默认使用前者。如果是使用前者,PB在编译的时候会先把common.reg、platform.reg、project.reg及所有的.reg文件的内容合并到reginit.ini文件,然后再将reginit.ini文件压缩成default.fdf的文件,放置到WindowsCE的操作系统映像文件nk.bin中去。在操作系统启动的时候,default.fdf文件会被解压到RAM中形成基于RAM的注册表,既然是基于RAM的注册表,那么对它所有的改变都会在断电后消失。

        如何才能使操作系统运行起来后所有的改动在断电时都不丢失而在以后重新启动时永久保存呢?答案就是利用Flash、DOC、硬盘、SD/MCC等永久存储设备,将修改后的注册表保存到这些永久存储设备上。但是如果把所有注册表都放置到永久存储设备上,那么WindowsCE又怎么能在没有加载存储设备驱动的情况下读到注册表呢?且一般情况下,加载存储设备驱动也需要注册表的支持!那么怎么才能做到呢?这就是蜂窝注册表所想到的。

        蜂窝注册表把WindowsCE的注册表分成两部分,第一部分是称做boot.hv的注册表,里面的东西是一些在没有拿到保存在磁盘注册表之前引导时需要的一些设置,这部分的注册表和基于RAM的一样的,修改之后如果断电没有了,所以这部分的注册表项都是不需要改动的,需要改动的都放到第二部分;第二部分是system.hv和user.hv注册表,也就是一直提到的要放到永久存储设备上的注册表。PB在编译的时候会根据.reg文件中的注释来判断哪些注册表项放到boot.hv中,要放置到boot.hv中的注册表项必须放置到下列注释对之间:

; HIVE BOOT SECTION

.......

......

; END HIVE BOOT SECTION

 

夹在这个注释对之间的注册表项,PB在编译的时候会把它们放置到boot.hv文件中去,其他的注册表项会分别被放置到default.hv和user.hv文件中去。WindowsCE在启动的第一阶段先把所有的.hv文件加载到RAM中,然后打开boot.hv拿到必要的注册表设置,其中包括了如何加载system.hv以及永久存储设备的驱动的注册表设置,所以那些和加载永久存储设备相关的驱动都要放到boot.hv中去,如FAT文件驱动,mspart分区驱动等,有一点需要特别注意的就是如果你的系统使用的是BinFS文件系统,且device.exe位于NK.bin中,那么一定要在操作系统启动的第一阶段保证BinFS文件系统可用,否则系统就不可能从永久存储设备加载system.hv了。

        WindowsCE在启动的时候,永久存储设备上并不存在任何注册表文件(.hv),这个时候WindowsCE会将内存的default.hv和user.hv文件复制到注册表的BootVars键制定的地方,且default.hv往往会被重命名为system.hv,WindowsCE在第二次启动及以后的启动时,会先检查永久存储设备上的.hv文件是不是和RAM中的一致,不一致的话就加载永久存储设备上的注册表项。

        需要注意的是,蜂窝注册表也是在RAM中运行的,不同的是WindowsCE在启动时会到永久存储设备上读取改动的注册表项,因为这样才能保证速度,所以任何对注册表的改动都是在内存中进行的,如果不想办法将内存中的注册表保存到磁盘上,那么这些改动还是会丢失的,通常有两种方法避免丢失,一种方法是通过应用程序调用RegFlushKey函数,另一种方法就是在注册表中将RegistryFlags注册键的值设置为1让系统在每次改动后自动保存注册表。

 

[HKEY_LOCAL_MACHINE\init\BootVars]
   "SYSTEMHIVE"="Documents and Settings\\system.hv"
   "PROFILEDIR"="Documents and Settings"
   "Start DevMgr"=dword:1
   "Flags"=dword:1000
   "RegistryFlags"=dword:1


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

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

相关文章

修改oracle默认日期,Oracle 修改默认日期格式

1、Oracle的日期格式Oracle数据缺省的时间格式数据的显示形式,与所使用的字符集有关。一般显示年月日,而不显示时分秒。例如,使用us7ascii字符集(或者是其他的英语字符集)时,缺省的时间格式显示为:28-Jan-2003&#xf…

【转】C#开发PACS医学影像处理系统(一):开发背景和功能预览

转自:https://www.cnblogs.com/Uncle-Joker/p/13646949.html 本系列文章将从以下模块和大家分享和讨论使用C#开发医学软件PACS和RIS系统, 国内相关资料比较少,也借此机会丰富一下医学软件开发生态,讨论技术难点,希望…

《WF编程》系列之30 - 基本活动:错误处理

《WF编程》系列之30 - 基本活动:错误处理 4.3 错误处理 Fault,故障,现在官方已经将其翻译为错误,那么以后的随笔中我也就采用官方的翻译吧. 错误处理也属于流程控制的一部分,这一节我来介绍一下有关错误处理的活动.错误是指在工作流执行期间发生的异常.我们可以使用错误处理程…

wince 自动启动程序设置

这是我在做wince6的时候为设置自启动而寻找的方法。我发现公司定的这个设备在“Program Files”和windows文件夹下放置的东西在机子重启之后就什么都没有了。我只有使用注册表测试,发现重启后还存在,因此我用注册表方式设置了自启动。而在这个过程中&…

oracle错误27101,ORA-27101ORA-01034错误解决

Oracle已经启动,连接sqlplus后,进行查询,出现下面错误ORA-01034: ORACLE not availableORA-27101: shared memory realm doesOracle已经启动,连接sqlplus后,进行查询,出现下面错误ORA-01034: ORACLE not av…

NOD32升级ID获取器For流星无语更新了

NOD32升级ID获取器For流星无语更新了一下,现在可以直接把用户名密码写入注册表了,连复制/粘贴操作都可以免了...转载于:https://www.cnblogs.com/lxwy/archive/2008/09/05/4420722.html

string也可以很精彩

// //TITLE: // string也可以很精彩 //AUTHOR: // norains //DATE: // Moday 03-November-2008 //Environment: // NONE // 对于习惯于MFC架构的朋友来说,估计直接采用API方式写代码最痛苦的莫过于没有CString。其实,在STL里面&#xff…

oracle存储过程行转列,oracle 存储过程-动态行转列,解决。

create or replace package body pro_test isprocedure Alarm_ContentsByTime(p_StartTime varchar2,----开始时间p_EndTime varchar2,----结束时间io_cursorinOUT out_cursor)iscursor cursor_1 IS--获取 列用于循环。select DISTINCT t.ps_productorcode code, t.PS_PRODUCTO…

【转】【C#】使用fo-dicom完成BMP,JPG,PNG图片转换为DICOM文件

转自:https://developer.aliyun.com/article/672065 最近研究了一下DICOM和BMP文件转换的问题,也是很头大。度娘了很久,也在CSDN等论坛看到一些断断续续的文件,最主要的是代码只是片断,不是完整的实现。头大了。 首先…

(转载)攻击方式学习之(1) - 跨站式脚本(Cross-Site Scripting)

原文地址:http://www.cnblogs.com/coderzh/archive/2008/09/06/1285500.html 声明:本文仅供学习研究之用,对于本文提到的某些网站的XSS漏洞,请读者发扬高尚的人道主义精神不要去危害他人,同时希望相应的网站能够尽快修…

C++设计模式之二 AbstractFactory模式

设计模式的目的就是尽量减少“变化”对程序的影响,尤其是对客户程序的影响。AbstractFactory模式作为创建型模式的一种,解决的就是“new”在变化中可能引起的问题。 先来看看new有何种不好,举个创建汽车的车门的例子: 很自然的一…

oracle win10配置命令,记一次Windows 平台下Oracle 10.2.0.5 EM重新配置

1. 删除EM资料库、dbconsole配置D:\>emca -deconfig dbcontrol db -repos dropEMCA 开始于 2013-2-20 9:53:17EM Configuration Assistant, 10.2.0.5.0 正式版版权所有 (c) 2003, 2009, Oracle。保留所有权利。输入以下信息:数据库 SID: ora10g监听程序端口号: 1521SYS 用户…

【转】Dicom 学习笔记-Dicom 消息服务(DIMSE-C/DIMSE-N)

转自:https://www.jianshu.com/p/2812b0b6e548 引言 DICOM(Digital Imaging and Communications in Medicine)医学数字成像与通信,是医疗影像领域一个非常重要的标准,本文主要简单介绍 DICOM 标准中的消息交换服务。在介绍之前先声明一下&am…

改写DataCogs在MOSS列表中实现三级联动字段

项目中有需求需要实现列表中3级的字段联动。参照小熊的[分享]修复DataCogs二级联动FieldControl支持中文 ,改造一下,实现了3级联动字段。另外,还可以实现一个列表中同时有两个,或两个以上互相独立的联动字段, 详细的字…

wince 常见问题

1 在mediaplayer全屏播放的时候,我可以用键盘上的某一个键调节声音大小,现在我想在屏幕上显示调节的结果就跟我们看电视一样能出来一些标记。当声音变大在屏幕上就增多, 当声音变小的时候就减少 得到播放窗口的DC,然后在上面显示…

【转】01.Dicom 学习笔记-DICOM C-Store 消息服务

转自:https://www.jianshu.com/p/bab6a85d3486 引言 之前总体介绍了 DICOM 的消息服务,可以参考这篇博文,但是有关每个服务的详细信息没有讲解,本文就结合开源 DICOM 库 fo-dicom 详细介绍一下 C-Store 服务。 名词简介 在正式讲…

Oracle客房管理系统论文,[转载]基于WEB的酒店管理系统论文【1】

摘要现代化的酒店组织庞大、服务项目多、信息量大,要想提高劳动生产、降低成本、提高服务质量和管理水平,进而促进经济效益,必须借助计算机来进行现代化的信息管理。酒店管理系统正是为此而设计的。优秀的酒店客房管理系统操作方便&#xff0…

使用C#和Excel进行报表开发(四)-复制单元格 【转】

在用Excel作报表的时候,可能会碰到分页的情况,这样就要分成多个Sheet显示,如果要在每页都保留表头,就需要将第一页作为模板设计的表头部分拷贝到其他的Sheet上,这时就要用用到Excel中的单元格拷贝。下面的代码说明如何…

【转】02.Dicom 学习笔记-DICOM C-Find 消息服务

引言 前篇介绍了 DICOM C-Store 消息服务,本文结合开源 DICOM 库 fo-dicom 详细介绍一下 C-Find 服务。 C-Find 消息服务 C-Find 服务是一个查询服务,用于一个 DIMSE-service-user 在同等的DIMSE-service-user 上查询复合 SOP 实例的属性满足查询条件给出…

C++设计模式之三 单例模式

《Singleton.h》 #include<iostream> #include<string> using namespace std; class A{ public: static A* GetInstance(); void ShowAddress(); private: A(); virtual ~A(); static A* m_p; }; 《Singleton.cpp》 #include "Singleton.h&q…