Wince关于Flash的永久保存注册表
先说原理:
注册表类型分为基于对象存储的注册表和基于HIVE的注册表,在定制内核的时候只能选择其中一种。 从理论上讲这两种注册表都能够实现永久保存注册表数据,但是采用不同的类型会影响CE的启动顺序和启动速度, 还会影响内存的使用量。我还是趋向于采用基于HIVE的注册表来实现永久保存注册表数据,这也是一个发展趋势。 在讲解之前先简单描述如果CE采用基于HIVE的注册表,那么在启动时如何加载已经保存的注册表数据: 1, nk.exe执行,启动filesys.exe。 2, filesys.exe加载引导HIVE,此时引导HIVE位于nk.bin解压之后的文件中。 3, filesys.exe启动device.exe,之后处于等待状态,等待device.exe将包含系统HIVE的文件系统和存储设备的驱动程序加载完毕。 4, 而这个文件系统和存储设备的驱动程序存在于引导HIVE中。 5, device.exe加载上述所说的文件系统驱动程序和存储设备驱动程序,使之开始工作。之后device.exe处于等待状态。 6, filesys.exe被唤醒,加载并且安装系统HIVE。之后filesys.exe处于等待状态。 7, nk.exe按照系统HIVE的信息开始执行初始化工作。其中包括加载驱动程序和启动一些应用程序。 其中加载驱动程序一般由device.exe执行,而启动应用程序由filesys.exe执行。这时device.exe和filesys.exe已经被唤醒。 因为引导HIVE和系统HIVE肯定有重复的地方,所以可能出现重复加载了驱动程序或者重复启动了应用程序。 为此,CE允许在描述驱动程序的注册表信息中加入防止重复的标志& |