Windows CE.NET下注册表相关技术
user.hv。
3) 引导HIVE保存在ROM(内核)中。具体保存内容同系统HIVE一样。当解压内核并加载注册表时,系统先将引导HIVE数据读出,引导HIVE包含了永久存储器的驱动程序和文件系统的驱动程序,这些驱动加载后,系统HIVE被加载,然后引导HIVE被释放。因为引导HIVE被包含在内核中,所以存在一种情况:如果重新做了一个新内核,引导HIVE中的数据同系统HIVE可能不相同。那么系统该加载哪个版本好呢?为此,CE在生成每个内核时都做了一个标志。而系统HIVE也存在这样一个标志,当加载引导HIVE时,如果引导HIVE和系统HIVE的标志不相同,系统会删除系统HIVE文件,然后重新创建一个文件并从引导HIVE复制数据。
iv. 永久保存注册表数据
Windows CE.NET采用新的注册表保存技术DD基于HIVE的注册表,的确让人很兴奋,在这之前基于Windows CE的设备,大多数采用给RAM供电方式来保存注册表数据,虽然也可以通过RegCopyFile函数永久保存,但毕竟启动时还要再热启动一次,有了基于HIVE的技术,启动时系统会自动加载数据,免去了热启动的麻烦,而且当内核更新升级时,你不用担心保存在永久存储器上的系统HIVE文件影响你新的内核,系统会自动判断并删除过时的系统HIVE文件。只有拥有了这样的技术,基于CE的产品才算是一个真正的电脑。
注:关于基于HIVE的注册表的实现,暂不讲解。
下面简单说明 RegCopyFile和RegRestoreFile的用法。
///使用基于RAM的注册表,利用RegCopyFile和RegRestoreFile
///实现永久保存注册表数据。
#include
#include
CString strRegBackup = L\hard disk\RegBackup.reg;
CString strTmp = L\windows\temp.reg;
////////导出。在系统关闭前。
if(! RegCopyFile(strTmp)) ///导出注册表,用temp.reg做缓冲用。
{
return FALSE;
}
if(! CopyFile(strTmp, strRegBackup, FALSE)) ///把temp.reg再复制到RegBackup.reg
{
return FALSE;
}
/////////导入。在系统启动时。
if(! CopyFile(strRegBackup, strTmp, FALSE))
{
return FALSE;
}
if(! RegRestoreFile(strTmp)) ///恢复注册表
{
return FALSE;
}
if(! KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL)) ///重新启动
{
return FALSE;
}
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)
