WinCE支持两种类型注册表:RAM-BasedHIVE-Based,默认使RAM-Based注册表。 1.RAM-Based注册表
RAM-Based注册表所有注册表数据存储象存储(object store),就存放RAM里面。般有电池备份RAM系统面,就说,当系统掉电以,自动切换成电池供电,此时RAM还有供电,所以面数据不丢失,这样采RAM-Based注册表非常有效。
RAM-Based注册表于经常热启动(Warm Boot)设备面,少冷启动(Cold Boot)设备面。
2.HIVE-Based注册表
HIVE-Based注册表注册表数据存成文,就存掉电不丢失数据磁盘面,HIVE注册表被分成两部分:系统Hive户Hive,就system.hvuser.hv。个户系统,包含个户Hive,不同户Hive(user.hv)该户登陆时候被加载,被注销时候卸载。
实际HIVE-Based注册表包含三个部分,称引Hive,系统Hive户Hive,就Boot.hv,system.hvuser.hv。Boot.hv主于系统引时候所需注册表设置,这部分设置不被保存磁盘面,就说,系统掉电以就丢失。实际,这部分应该说属于RAM-Based注册表,由于这部分数据不需改动,所以就无所谓。System.hv存放关于系统注册表设置,user.hv存放户相关注册表设置。
般们编译WinCE系统时候,Platform Builder根据platform.reg文注释标签判断哪些注册表设置放入boot.hv,凡注释标签”;HIVE BOOT SECTON””;END HIVE BOOT SECTION”间设置都被放入boot.hv,其都放default.hvuser.hv。
WinCE第次引时候,所有.hv都被放RAM,WinCE系统首先读boot.hv进行相关引时候设置,然default.hvuser.hv放磁盘指定路径面,这个路径注册表设置,然default.hv被重命名system.hv。当系统第二次启动时候,比较磁盘.hv存.hv否致,如果不致,拷贝磁盘面.hv存。
们以看出,实际HIVE注册表运行时候放RAM,这样速度比较快。启动时候从磁盘读出,户更改注册表以,被保存磁盘,保存时机以设置,以选择户更改立刻保存磁盘,以选择reboot时候保存。
3HIVE-Based注册表实现
(1) 添加HIVE-Based注册表项
系统支持HIVE-Based注册表”Catalog Item View”选择”Core OS”->”CEBASE”->”File System and Da
需添加相应注册表设置,般们platform.reg添加HIVE相关设置,首先需添加HIVE注释标签,如:
;HIVE BOOT SECTION
…
<your registry setting>
…
;END BOOT SECTION
所有HIVE有关注册表设置包括HIVE存放磁盘驱动相关设置都放HIVE注释标签。
(3) 设置注册表存放位置:
面通过个例子说明设置system.hvuser.hv存放位置
[HKEY_LOCAL_MACHINEinitBootVars]
"SystemHive"="NandFlashsystem.hv"
"ProfileDir"="NandFlashuser.hv"
"Flags"=dword:1
"RegistryFlags"=dword:1
“SystemHive”设置system.hv存放位置,这里存放NandFlash磁盘根目录面。
“ProfileDir”设置user.hv存放位置,这里存放NandFlash磁盘根目录面。
“Flags”设置否立刻启动Device Manager,主启动Hive-Based所需存储设备。
“RegistryFlags”设置什么时候新注册表设置入磁盘,这里表示立刻入。
(4) 修改磁盘设备驱动配置
相关磁盘驱动添加支持Hive设置,如:
[HKEY_LOCAL_MACHINEDriversBuiltInNANDFlash]
"Flags"=dword:1000
由于Hive注册表被保存NandFlash,所以”Flags”设置添加NandFlash设备驱动注册表设置。面设置只有使HIVE-Based注册表时候需,如果不Hive注册表,需注释掉。
(5) 添加Storage Manager相关配置
具体添加如:
[HKEY_LOCAL_MACHINESystemStorageManagerProfiles<ProfileName><FileSystemName>]
"MountBootable"=dword:1
同样,使HIVE注册表时候需述设置,如果不使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