因仑“3+1”工程特种兵精英论坛

标题: winCE 注册表相关讨论 [打印本页]

作者: leixiaofeng    时间: 2015-4-17 19:43
标题: winCE 注册表相关讨论

1、 对象存储(object store)
  对象存储是Windows CE默认的数据存储机制。任何新创建的内核中都默认包含对象存储器。对象存储的实质是在RAM中创建一个文件系统,将文件保存在RAM中,这些文件来源于ROM。当设备启动时,引导程序将ROM中的内核文件解压并存放在RAM中。"/windows"目录就是基于对象存储的。对象存储的特点是文件可以压缩、支持事务机制(和数据库中的事务机制相似)、数据I/O相对较快。

A、对象存储中的对象类型包括文件、目录、数据库、记录、数据库卷。CE为每个对象分配一个对象ID(CEOID)。访问或者操作任何对象的前提是得到该对象ID。B、CE能够自动压缩所有对象存储中的文件(CE提供了一个选项供OEM设置是否能够自动压缩文件)。所以文件没有压缩或不压缩的标志,但是有一个标志,标明此文件存在于ROM还是RAM中。一个文件最大长度可达到4 GB。C、CE提供了三种文件系统:基于ROM的文件系统、基于RAM的文件系统、FAT文件系统。

2、 注册表(registry)
  CE下注册表和其它windows操作系统中注册表概念和结构基本相同。

A、CE下注册表限制:键名最大长度255个字符; 数据最大 4KB;子键深度最大值 16层。B、根键有HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USERS。C、操作注册表函数:

3、CE下注册表类型
  分为基于RAM的注册表和基于HIVE的注册表。


A、基于RAM的注册表,也叫基于对象存储(oject storage)的注册表。用于将注册表数据全部保存在RAM中。B、 基于HIVE的注册表。用于将注册表数据全部或部分保存到永久存储器上。

下面简单说明 RegCopyFile和RegRestoreFile的用法。
///使用基于RAM的注册表,利用RegCopyFile和RegRestoreFile
///实现永久保存注册表数据。

#include <Pkfuncs.h>#include <winbase.h>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;}





欢迎光临 因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4