wince注册表的加载过程以及device.exe和filesys.exe的加载过程
来源:互联网 发布:安卓6.0mac地址修改器 编辑:程序博客网 时间:2024/06/10 11:22
1、 Windows CE注册表简介:
与其他桌面版本Windows一样,Windows CE也使用注册表(Registry)来保存应用程序、驱动程序和用户的设定以及其他一些配置信息。 Windows CE注册表也采用树形结构来管理配置信息。
Windows CE支持四个根键,描述如下:
键名描述
HKEY_LOCAL_MACHINE 硬件和驱动配置数据
HKEY_CURRENT_USER 用户配置数据
HKEY_CLASSES_ROOT OLE 文件类型匹配配置数据
HKEY_USERS 适用于所有用户的数据
2、 Windows CE注册表的类型和加载过程
由于嵌入式系统的特点,一些嵌入式设备是没有外部存存储设备。因此Windows CE的注册表提供了两种实现方式:基于RAM的注册表(RAM- Based Registry)和基于Hive的注册表(Hive-Based Registry)。我们可以选择在Windows CE中使用任何一种注册表,通常在我们的ARM嵌入式系统中会选择Flash作为外部存储设备,所以我们选择基于Hive的注册表类型。下面我们分析一下Windows CE注册表的加载过程:
图2-1
nk.exe执行,启动filesys.exe。
filesys.exe加载引导HIVE,此时引导HIVE位于nk.bin解压之后的文件中。
filesys.exe启动device.exe,之后处于等待状态,等待device.exe将包含系统HIVE的文件系统和存储设备的驱动程序加载完毕。而这个文件系统和存储设备的驱动程序存在于引导HIVE中。device.exe加载上述所说的文件系统驱动程序和存储设备驱动程序,使之开始工作。之后device.exe处于等待状态。filesys.exe被唤醒,加载并且安装系统HIVE。之后filesys.exe处于等待状态。nk.exe按照系统HIVE的信息开始执行初始化工作。其中包括加载驱动程序和启动一些应用程序。其中加载驱动程序一般由device.exe执行,而启动应用程序由filesys.exe执行。这时device.exe和filesys.exe已经被唤醒。
3 、设置基于HIVE的注册表
在PB中加入"Hive-based Registry",实验平台:CPU:S3C2410;外部存储设备(Flash)K9F1208UOM 打开%BSP%/Files/platform.reg,找到如下信息:
; HIVE BOOT SECTION
[HKEY_LOCAL_MACHINE\init\BootVars]
"SYSTEMHIVE"="system.hv"
; "PROFILEDIR"="Documents and Settings"
"Start DevMgr"=dword:1
"RegistryFlags"=dword:1
[HKEY_LOCAL_MACHINE\init\BootVars]
"DefaultUser"="default" "SYSTEMHIVE"的值为系统HIVE文件的路径。"Start DevMgr"是一个布尔值,指示是否开始就执行设备管理器device.exe,只有想把系统HIVE存储在对象存储中才在此设置为0,所以这里我们要设置为1。可以在上述的注册表位置下输入"DefaultUser"="",指定默认的用户名。如果是单用户系统,可以不设置在“; HIVE BOOT SECTION”和“; END HIVE BOOT SECTION”之间的所有驱动程序的注册表信息中都加入下列一个标志:
"Flags"=dword:1000
这个标志是一个位掩码,它可以和其它已经存在的"Flags"或运算。值1000表示此驱动程序只加载一次,这样device.exe就不会把当前驱动程序加载两次了。
保证将包含系统HIVE的文件系统驱动程序的注册表信息和存储设备的驱动程序的注册表信息被包含在“; HIVE BOOT SECTION”和“; END HIVE BOOT SECTION”之间,在这两个语句之间的注册表数据全部属于引导HIVE。
[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\FlashDrv]
"DriverPath"="Drivers\\BlockDevice\\FlashDrv"
"LoadFlags"=dword:1
"MountFlags"=dword:11
"BootPhase"=dword:0
"Flags"=dword:1000
[HKEY_LOCAL_MACHINE\Drivers\BlockDevice\FlashDrv]
"Prefix"="DSK"
"Dll"="FLASHDRV.dll" //调用Flash驱动
"Order"=dword:0
"Ioctl"=dword:4
"Profile"="FlashDrv"
"FriendlyName"="MS Flash Driver"
"MountFlags"=dword:11
"BootPhase"=dword:0
"Flags"=dword:1000
; Bind BINFS to the block driver
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDrv]
"DefaultFileSystem"="BINFS" //建立BINFS文件系统
"PartitionDriver"="mspart.dll"
"AutoMount"=dword:1
"AutoPart"=dword:1
"MountFlags"=dword:2
"Folder"="MYFlashDisk" //实现可以读写的文件夹
"Name"="Microsoft Flash Disk"
"BootPhase"=dword:0
"Flags"=dword:1000
上面的信息添加到platform.reg的“HIVE BOOT SECTION”和“END HIVE BOOT SECTION”之间, 其中"Folder"="MYFlashDisk"文件实现可以读写文件目录MYFlashDisk
注册表信息被保存到此文件夹,系统冷启动后会到此文件夹下读取上次用户基于注册表的设置。
- wince注册表的加载过程以及device.exe和filesys.exe的加载过程
- wince注册表的加载过程以及device.exe和filesys.exe的加载过程
- exe的dll加载过程
- EXE文件的加载过程
- DOS下EXE文件的加载与执行过程
- WINCE注册表的存储和加载
- WINCE 注册表的存储和加载
- WINCE注册表的存储和加载
- WINCE 显示驱动的加载过程
- WinCE 加载存储设备的过程
- WinCE的NK.exe和File.exe
- 外部exe程序启动CAD并且自动加载CAD的ARX程序的过程
- 《Orange’s 一个操作系统的实现》3.保护模式3----DOS加载.EXE过程
- windows启动以及exe文件的加载简介
- windows启动以及exe文件的加载简介
- reboot.exe的制作过程
- WINCE5 filesys.exe解说
- WINCE 文件系统源码 filesys.exe解…
- SOAP在java中的应用实例
- 树形结构的数据库表Schema设计
- java中Calendar用法总结
- 【源码包编译】CentOS-5.7安装GTK+(未完)
- Jquery取值
- wince注册表的加载过程以及device.exe和filesys.exe的加载过程
- jira与oracle字符集不一致问题解决
- JAVA中final的一些作用介绍
- Ubuntu 11.10 12.04 12.10流行的应用插件
- hdoj 1263 map
- 求一组线段的覆盖范围
- 《 UNIX网络编程》源码的使用
- ubuntu11.10 "正在设定 ttf-mscorefonts-installer" 解决方法
- hdu 1214 圆桌会议