 WinCE
WinCE 支持两种类型
支持两种类型 注册表:RAM-Based
注册表:RAM-Based HIVE-Based,默认
HIVE-Based,默认
 使
使

 RAM-Based注册表。 1.RAM-Based注册表
RAM-Based注册表。 1.RAM-Based注册表 
  RAM-Based 注册表
注册表
 所有
所有 注册表数据存储
注册表数据存储
 象存储(object store)
象存储(object store) ,
, 就
就 存放
存放 RAM里面。
RAM里面。 般
般
 有电池备份RAM
有电池备份RAM 系统
系统 面,
面, 就
就 说,当系统掉电以
说,当系统掉电以 ,
, 自动切换成电池供电,此时RAM还有供电,所以
自动切换成电池供电,此时RAM还有供电,所以 面
面 数据不
数据不 丢失,这样采
丢失,这样采 RAM-Based注册表非常有效。
RAM-Based注册表非常有效。
  RAM-Based注册表
 于经常热启动(Warm Boot)
于经常热启动(Warm Boot) 设备
设备 面,
面, 少
少
 冷启动(Cold Boot)设备
冷启动(Cold Boot)设备 面。
面。
2.HIVE-Based注册表
  HIVE-Based 注册表
注册表
 注册表数据存成文
注册表数据存成文 ,
, 就
就 存
存 掉电不
掉电不 丢失数据
丢失数据 磁盘
磁盘 面,HIVE注册表被分成两部分:系统Hive
面,HIVE注册表被分成两部分:系统Hive
 户Hive,
户Hive, 就
就 system.hv
system.hv user.hv。
user.hv。
 个
个
 户系统
户系统 ,
, 包含
包含 个
个 户Hive,不同
户Hive,不同
 户Hive(user.hv)
户Hive(user.hv)
 该
该 户登陆
户登陆 时候被加载,被注销
时候被加载,被注销 时候卸载。
时候卸载。
  实际 HIVE-Based
HIVE-Based 注册表包含三个部分,
注册表包含三个部分, 称
称
 引
引 Hive,系统Hive
Hive,系统Hive
 户Hive,
户Hive, 就
就 Boot.hv,system.hv
Boot.hv,system.hv user.hv。Boot.hv主
user.hv。Boot.hv主
 于系统引
于系统引 时候所需
时候所需 注册表设置,这部分设置不
注册表设置,这部分设置不 被保存
被保存 磁盘
磁盘 面,
面, 就
就 说,
说, 系统掉电以
系统掉电以 就
就 丢失。实际
丢失。实际 ,这部分应该说
,这部分应该说 属于RAM-Based注册表,由于这部分数据不需
属于RAM-Based注册表,由于这部分数据不需 改动,所以
改动,所以 就无所谓
就无所谓 。System.hv存放关于系统
。System.hv存放关于系统 注册表设置,user.hv存放
注册表设置,user.hv存放
 户相关
户相关 注册表设置。
注册表设置。
   般
般
 们编译WinCE系统
们编译WinCE系统 时候,Platform Builder
时候,Platform Builder 根据platform.reg文
根据platform.reg文

 注释标签
注释标签 判断哪些注册表设置放入boot.hv
判断哪些注册表设置放入boot.hv ,凡
,凡
 注释标签”;HIVE BOOT SECTON”
注释标签”;HIVE BOOT SECTON” ”;END HIVE BOOT SECTION”
”;END HIVE BOOT SECTION” 间
间 设置都
设置都 被放入boot.hv
被放入boot.hv ,其
,其
 都
都 放
放 default.hv
default.hv user.hv
user.hv 。
。 
 WinCE第
WinCE第 次引
次引
 时候,所有
时候,所有 .hv都
.hv都 被放
被放 RAM
RAM ,WinCE系统
,WinCE系统 首先读
首先读 boot.hv进行相关引
boot.hv进行相关引 时候
时候 设置,然
设置,然
 default.hv
default.hv user.hv放
user.hv放 磁盘
磁盘 指定路径
指定路径 面,这个路径
面,这个路径

 注册表
注册表 设置
设置 ,然
,然 default.hv
default.hv 被重命名
被重命名 system.hv。当系统第二次启动
system.hv。当系统第二次启动 时候,
时候, 比较磁盘
比较磁盘
 .hv
.hv
 存
存
 .hv
.hv 否
否 致,如果不
致,如果不 致,
致, 拷贝磁盘
拷贝磁盘 面
面 .hv
.hv
 存
存 。
。
   们
们 以看出,实际
以看出,实际 HIVE注册表
HIVE注册表 运行
运行 时候
时候
 放
放 RAM
RAM
 ,这样速度比较快。启动
,这样速度比较快。启动 时候
时候 从磁盘
从磁盘 读出,
读出,
 户更改注册表以
户更改注册表以 ,
, 被保存
被保存 磁盘
磁盘 ,保存
,保存 时机
时机

 以设置
以设置 ,
, 以选择
以选择
 户更改
户更改 立刻保存
立刻保存 磁盘
磁盘 ,
,
 以选择
以选择 reboot
reboot 时候保存。
时候保存。
3HIVE-Based注册表实现
(1) 添加HIVE-Based注册表项
   系统
系统 支持HIVE-Based注册表
支持HIVE-Based注册表
 ”Catalog Item View”
”Catalog Item View” 选择”Core OS”->”CEBASE”->”File System and Da
选择”Core OS”->”CEBASE”->”File System and Da
 需
需 添加相应
添加相应 注册表设置,
注册表设置, 般
般 们
们
 platform.reg
platform.reg 添加HIVE相关
添加HIVE相关 设置,首先需
设置,首先需 添加
添加
 HIVE注释标签,如
HIVE注释标签,如 :
:
;HIVE BOOT SECTION
…
<your registry setting>
…
;END BOOT SECTION
  所有 HIVE有关
HIVE有关 注册表设置包括HIVE存放
注册表设置包括HIVE存放 磁盘
磁盘 驱动
驱动 相关设置都
相关设置都 放
放 HIVE注释标签
HIVE注释标签 。
。
  (3) 设置注册表存放 位置:
位置: 
   面通过
面通过 个例子
个例子 说明
说明 设置system.hv
设置system.hv user.hv存放
user.hv存放 位置
位置 
[HKEY_LOCAL_MACHINEinitBootVars]
"SystemHive"="NandFlashsystem.hv"
"ProfileDir"="NandFlashuser.hv"
"Flags"=dword:1
"RegistryFlags"=dword:1
  “SystemHive”
 设置system.hv存放
设置system.hv存放 位置,这里存放
位置,这里存放 NandFlash磁盘
NandFlash磁盘 根目录
根目录 面。
面。
  “ProfileDir”
 设置user.hv存放
设置user.hv存放 位置,这里存放
位置,这里存放 NandFlash磁盘
NandFlash磁盘 根目录
根目录 面。
面。
  “Flags”
 设置
设置 否立刻启动Device Manager,主
否立刻启动Device Manager,主


 启动Hive-Based所需
启动Hive-Based所需 存储设备。
存储设备。
  “RegistryFlags”
 设置什么时候
设置什么时候 新
新 注册表设置
注册表设置 入磁盘,这里表示立刻
入磁盘,这里表示立刻 入。
入。
  (4) 修改磁盘设备驱动 配置
配置 
   相关
相关 磁盘驱动添加支持Hive
磁盘驱动添加支持Hive 设置,如
设置,如 :
:
[HKEY_LOCAL_MACHINEDriversBuiltInNANDFlash]
"Flags"=dword:1000
  由于Hive注册表 被保存
被保存 NandFlash
NandFlash ,所以
,所以 ”Flags”
”Flags” 设置添加
设置添加
 NandFlash设备驱动
NandFlash设备驱动 注册表设置
注册表设置 。
。 面
面 设置只有
设置只有 使
使 HIVE-Based注册表
HIVE-Based注册表 时候需
时候需 ,如果不
,如果不
 Hive注册表,需
Hive注册表,需 注释掉。
注释掉。
  (5) 添加Storage Manager 相关配置
相关配置 
  具体添加如 :
:
[HKEY_LOCAL_MACHINESystemStorageManagerProfiles<ProfileName><FileSystemName>]
"MountBootable"=dword:1
  同样, 使
使 HIVE注册表
HIVE注册表 时候需
时候需
 述设置,如果不
述设置,如果不 使
使 HIVE注册表,则注释掉就
HIVE注册表,则注释掉就 以
以 。
。 
  面
面
 曾经基于NandFlash支持Hive注册表
曾经基于NandFlash支持Hive注册表 设置,仅供参考:
设置,仅供参考:
; HIVE BOOT SECTION
[HKEY_LOCAL_MACHINEinitBootVars]
"SystemHive"="NANDFlashsystem.hv" ;unmask this line to use flash
"ProfileDir"="NANDFlashusr.hv"
"Start DevMgr"=dword:1
"DefaultUser"="default"
"Flags"=dword:1
"RegistryFlags"=dword:1
[HKEY_LOCAL_MACHINESystemStorageManagerAutoLoadNSFlash]
"DriverPath"="DriversBuiltInNANDFlash"
"LoadFlags"=dword:1 "Order"=dword:0
[HKEY_LOCAL_MACHINEDriversBuiltInNANDFlash]
"Dll"="ep94xxnandflash.dll"
"Prefix"="DSK" "Order"=dword:0
;"Ioctl"=dword:4
"Pro
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
"Flags"=dword:1000 ;unmask this line when enable HIVE
;"MemBase"=dword:00000000
;"MemLen"=dword:00000000
; Override names in default pro
[HKEY_LOCAL_MACHINESystemStorageManagerProfilesNSFlash]
"Name"="Ep94xx NAND Flash"
"Folder"="NANDFlash"
"PartitionDriver"="MSPart.dll"
"AutoMount"=dword:1
"AutoPart"=dword:1
"AutoFormat"=dword:1
"MountFlags"=dword:2 ;unmask this line when enable HIVE
[HKEY_LOCAL_MACHINESystemStorageManagerProfilesNSFlashFATFS]
"MountFlags"=dword:2 ;unmask this line when enable HIVE
"EnableCache"=dword:1
"CacheSize"=dword:1000
"MountBootable"=dword:1
"Flags"=dword:00000024
;"Flags"=dword:00680024
;"FormatTfat"=dword:1
"CheckForFormat"=dword:1