当前位置:首页 > 嵌入式 > 嵌入式软件
[导读] 这一章主要讲解Windows CE.NET下注册表相关技术。1、 对象存储(object store)对象存储是Windows CE默认的数据存储机制。任何新创建的内核中都默认包含对象存储器。对象存

 这一章主要讲解Windows CE.NET下注册表相关技术。

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、操作注册表函数:

i. 打开RegOpenKeyEx 和创建RegCreateKeyEx

ii. 读RegQueryValueEx写RegSetValueEx

iii. 枚举入口或子键RegEnumValue、RegEnumKeyEx

iv. 删除入口或子键RegDeleteValue、RegDeleteKey

v. 关闭RegCloseKey

3、CE下注册表类型

分为基于RAM的注册表和基于HIVE的注册表。

A、基于RAM的注册表,也叫基于对象存储(oject storage)的注册表。用于将注册表数据全部保存在RAM中。

i. 从CE v1.0开始到CE .NET之前,仅采用此技术来保存注册表。每个新创建的内核都默认采用此技术来保存注册表。

ii. 适合频繁热启动而不冷启动的设备。系统关闭时提供低电源给RAM。如果断电,重新启动设备后,系统将从内核中重新读取注册表数据到RAM。当然以前保存的用户数据已经丢失。

iii. 基于RAM的注册表也能够永久保存注册标数据。CE提供了两个机制。

1) 第一种机制的设计思路是在设备关闭前调用RegCopyFile函数将整个注册表数据以文件形式保存到永久存储器上。重新启动设备时,调用RegRestoreFile函数将文件全部读出到RAM中。但是这时必须一次热启动才能使恢复的注册表数据有效。所以每次启动就多出一次热启动。好在热启动非常快,几秒钟的时间。

2) 另一种机制可以避免前一种机制的需要两次启动的缺点。但也有它的缺点。OEM(原始设备制造商)可以在OAL层编写WriteRegistryToOEM and ReadRegistryFromOEM两个函数,内核在启动时会自动调用ReadRegistryFromOEM函数来读注册表数据。而应用程序调用RegFlushKey函数时,这个函数用调用WriteRegistryToOEM函数写注册表数据到永久存储器上。这个机制避免了两次启动的缺陷。但问题出现在内核启动时,调用ReadRegistryFromOEM之前文件系统驱动程序还没加载,那就无法打开、读取文件。CE帮助文件中说解决办法是将从永久存储器中读取数据的代码加到ReadRegistryFromOEM中。帮助中说的意思可不是调用ReadFile这么简单的,因为文件系统驱动程 序还没加载。

3) 个人建议:如果要采用基于RAM的注册表保存机制,而且要求永久保存注册表数据,使用第一种机制比较容易。

B、 基于HIVE的注册表。用于将注册表数据全部或部分保存到永久存储器上。

i.它是从CE.NET开始采用的新技术。适合经常冷启动而不热启动的设备。

ii.支持多用户信息分别保存。当一个用户登录时,加载这个用户的注册表数据,注销时卸载这个用户的注册表数据。

iii. HIVE是指一组键,包括子键、键值、数据。是保存或者加载注册表数据的单位。分为系统HIVE(system hive)、用户HIVE(uer hive)、引导HIVE(boot hive)。

1) 系统HIVE包含了关于系统的设置信息。具体保存注册表中HKEY_LOCAL_MACHINE、HKEY_CLASSES_ROOT、HKEY_USERS键下所有数据。保存系统HIVE的文件的路径在【HKEY_LOCAL_MACHINEinitBootVars】下,键名为"systemhive",键值为文件的路径。默认为"Documents and Settingssystem.hv"。

2) 用户HIVE包含了一个用户的信息。具体保存注册表中HKEY_CURRENT_USER键下所有数据。保存用户HIVE的文件的路径同样为【HKEY_LOCAL_MACHINEinitBootVars】下,键名为"profiledir",键值为所有用户HIVE的共同目录。默认为"Documents and Settings",在这个目录下包含了以每个用户名命名的子目录。子目录里含有一个文件,默认文件名为user.hv。

3) 引导HIVE保存在ROM(内核)中。具体保存内容同系统HIVE一样。当解压内核并加载注册表时,系统先将引导HIVE数据读出,引导HIVE包含了永久存储器的驱动程序和文件系统的驱动程序,这些驱动加载后,系统HIVE被加载,然后引导HIVE被释放。因为引导HIVE被包含在内核中,所以存在一种情况:如果重新做了一个新内核,引导HIVE中的数据同系统HIVE可能不相同。那么系统该加载哪个版本好呢?为此,CE在生成每个内核时都做了一个标志。而系统HIVE也存在这样一个标志,当加载引导HIVE时,如果引导HIVE和系统HIVE的标志不相同,系统会删除系统HIVE文件,然后重新创建一个文件并从引导HIVE复制数据。

iv. 永久保存注册表数据

Windows CE.NET采用新的注册表保存技术――基于HIVE的注册表,的确让人很兴奋,在这之前基于Windows CE的设备,大多数采用给RAM供电方式来保存注册表数据,虽然也可以通过RegCopyFile函数永久保存,但毕竟启动时还要再热启动一次,有了基于HIVE的技术,启动时系统会自动加载数据,免去了热启动的麻烦,而且当内核更新升级时,你不用担心保存在永久存储器上的系统HIVE文件影响你新的内核,系统会自动判断并删除过时的系统HIVE文件。只有拥有了这样的技术,基于CE的产品才算是一个真正的电脑。[!--empirenews.page--]

注:关于基于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;

}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭