您的位置 首页 5G

Windows CE.NET下注册表相关技能

这一章主要讲解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选用新的注册表保存技能DD根据HIVE的注册表,确实让人很振奋,在这之前根据Windows CE的设备,大多数选用给RAM供电方法来保存注册表数据,尽管也能够经过RegCopyFile函数永久保存,但毕竟发动时还要再热发动一次,有了根据HIVE的技能,发动时体系会主动加载数据,免去了热发动的费事,并且当内核更新晋级时,你不必忧虑保存在永久存储器上的体系HIVE文件影响你新的内核,体系会主动判别并删去过期的体系HIVE文件。只要具有了这样的技能,根据CE的产品才算是一个真实的电脑。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/5g/300110.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部