=============================================================
标题:wince添加Hive-based Registry
摘要:
备注:Windows CE 5.0
日期:2010.5.5
姓名:朱铭雷
=============================================================
wince有两种注册表,RAM-based Registry和Hive-based Registry。基于RAM的注册表,对其的所有修改都会在掉电后丢失。而蜂窝注册表(Hive-based Registry)则能够保存住对注册表的修改。使用Hive-based Registry,wince在启动的时候,会到FLASH读取修改的注册表项。所以使用蜂窝注册表的时候,如果修改了注册表的内容,并希望保存住,还要通过某种方法将内存中的注册表保存到FLASH中。一种方法是应用程序调用RegFlushKey函数,一种方法是注册表中"RegistryFlags"=dword:1,系统自动保存注册表。
首先添加Hive-based Registry组件,相关的注册表参考如下:
; HIVE BOOT SECTION
[HKEY_LOCAL_MACHINE/init/BootVars]
"SYSTEMHIVE"="//Registry//system.hv"
"PROFILEDIR"="//Registry//usr.hv"
"Start DevMgr"=dword:1
"RegistryFlags"=dword:1
[HKEY_LOCAL_MACHINE/init/BootVars]
"DefaultUser"="default"
[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/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
; Bind BINFS to the block driver
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/FlashDrv]
"DefaultFileSystem"="FATFS"
"PartitionDriver"="mspart.dll"
"AutoMount"=dword:1
"AutoPart"=dword:1
"AutoFormat"=dword:1
"Folder"="NTFlash"
"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
; HIVE BOOT SECTION
其中:
[HKEY_LOCAL_MACHINE/init/BootVars]
"SYSTEMHIVE"="//Registry//system.hv"
"PROFILEDIR"="//Registry//usr.hv"
定义了system.hv和usr.hv在FLASH中的存储位置。蜂窝注册表由boot.hv,system.hv,usr.hv等几部分组成。启动阶段需要的注册表内容存放在boot.hv中,其他的注册表内容存放在system.hv和usr.hv中。如上面的注册表,在“; HIVE BOOT SECTION;” 和“HIVE BOOT SECTION”注释之间的注册表项在编译时会放置在boot.hv中,诸如FAT文件系统驱动,mspart分区驱动等需要放置在boot.hv中的内容,都要放在这个注释对之间。
对于Hive-based Registry,"Start DevMgr"键值要设置为1。"RegistryFlags"=dword:1
,使操作系统在注册表修改之后自动刷新到FLASH中。
重新生成NK,烧进板子测试了一下,改变了与声音有关的注册表设置,重新开电,已经保存住了。