外贸英文网站制作,听完米课做的网站,邢台网站维护,怎么把网站建设推广出去WindowsCE有两种注册表#xff0c;一种是基于RAM的#xff0c;一种是基于蜂窝的注册表#xff1b;WindowsCE会默认使用前者。如果是使用前者#xff0c;PB在编译的时候会先把common.reg、platform.reg、project.reg及所有的.reg文件的内容合并到reginit.ini文件#xff0c… WindowsCE有两种注册表一种是基于RAM的一种是基于蜂窝的注册表WindowsCE会默认使用前者。如果是使用前者PB在编译的时候会先把common.reg、platform.reg、project.reg及所有的.reg文件的内容合并到reginit.ini文件然后再将reginit.ini文件压缩成default.fdf的文件放置到WindowsCE的操作系统映像文件nk.bin中去。在操作系统启动的时候default.fdf文件会被解压到RAM中形成基于RAM的注册表既然是基于RAM的注册表那么对它所有的改变都会在断电后消失。 如何才能使操作系统运行起来后所有的改动在断电时都不丢失而在以后重新启动时永久保存呢答案就是利用Flash、DOC、硬盘、SD/MCC等永久存储设备将修改后的注册表保存到这些永久存储设备上。但是如果把所有注册表都放置到永久存储设备上那么WindowsCE又怎么能在没有加载存储设备驱动的情况下读到注册表呢且一般情况下加载存储设备驱动也需要注册表的支持那么怎么才能做到呢这就是蜂窝注册表所想到的。 蜂窝注册表把WindowsCE的注册表分成两部分第一部分是称做boot.hv的注册表里面的东西是一些在没有拿到保存在磁盘注册表之前引导时需要的一些设置这部分的注册表和基于RAM的一样的修改之后如果断电没有了所以这部分的注册表项都是不需要改动的需要改动的都放到第二部分第二部分是system.hv和user.hv注册表也就是一直提到的要放到永久存储设备上的注册表。PB在编译的时候会根据.reg文件中的注释来判断哪些注册表项放到boot.hv中要放置到boot.hv中的注册表项必须放置到下列注释对之间 ; HIVE BOOT SECTION ....... ...... ; END HIVE BOOT SECTION 夹在这个注释对之间的注册表项PB在编译的时候会把它们放置到boot.hv文件中去其他的注册表项会分别被放置到default.hv和user.hv文件中去。WindowsCE在启动的第一阶段先把所有的.hv文件加载到RAM中然后打开boot.hv拿到必要的注册表设置其中包括了如何加载system.hv以及永久存储设备的驱动的注册表设置所以那些和加载永久存储设备相关的驱动都要放到boot.hv中去如FAT文件驱动mspart分区驱动等有一点需要特别注意的就是如果你的系统使用的是BinFS文件系统且device.exe位于NK.bin中那么一定要在操作系统启动的第一阶段保证BinFS文件系统可用否则系统就不可能从永久存储设备加载system.hv了。 WindowsCE在启动的时候永久存储设备上并不存在任何注册表文件.hv这个时候WindowsCE会将内存的default.hv和user.hv文件复制到注册表的BootVars键制定的地方且default.hv往往会被重命名为system.hvWindowsCE在第二次启动及以后的启动时会先检查永久存储设备上的.hv文件是不是和RAM中的一致不一致的话就加载永久存储设备上的注册表项。 需要注意的是蜂窝注册表也是在RAM中运行的不同的是WindowsCE在启动时会到永久存储设备上读取改动的注册表项因为这样才能保证速度所以任何对注册表的改动都是在内存中进行的如果不想办法将内存中的注册表保存到磁盘上那么这些改动还是会丢失的通常有两种方法避免丢失一种方法是通过应用程序调用RegFlushKey函数另一种方法就是在注册表中将RegistryFlags注册键的值设置为1让系统在每次改动后自动保存注册表。 [HKEY_LOCAL_MACHINE\init\BootVars] SYSTEMHIVEDocuments and Settings\\system.hv PROFILEDIRDocuments and Settings Start DevMgrdword:1 Flagsdword:1000 RegistryFlagsdword:1