• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Windows CE的注冊表在線修改及保存

    基于Windows CE的注冊表在線修改及保存

    作者: 時間:2012-08-27 來源:網絡 收藏

    引言:

    本文引用地址:http://www.czjhyjcfj.com/article/148537.htm

    作為一種嵌入式的操作系統,已經有了10多年的歷史,從最早的1.0版本到如今的最新的6.0版本。 已經在嵌入式操作系統領域占據了非常重要的地位,同時還派生出了很多不同的版本,應用到不同的領域, Mobilej就是其中非常成功的一個版本。

    作為一種嵌入式操作系統,我們有必要了解它的啟動過程和加載機制,特別是其中的加載是系統加載的核心。Windows 內核創建過程用的REG文件幾乎和其他桌面版本Windows操作系統就有相同的格式,只是去掉了文件頂部的版本標記,防止開發者錯誤的將Windows CE的信息添加到主機的系統里,造成系統的故障。

    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_MACHINEinitBootVars]

    SystemHIVE=system.hv

    ; PROFILEDIR=Documents and Settings

    Start DevMgr=dword:1

    RegistryFlags=dword:1

    [HKEY_LOCAL_MACHINEinitBootVars]

    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_MACHINESystemStorageManagerAutoLoadFlashDrv]

    DriverPath=DriversBlockDeviceFlashDrv

    LoadFlags=dword:1

    MountFlags=dword:11

    BootPhase=dword:0

    Flags=dword:1000

    [HKEY_LOCAL_MACHINEDriversBlockDeviceFlashDrv]

    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_MACHINESystemStorageManagerProfilesFlashDrv]

    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


    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 墨脱县| 沈丘县| 驻马店市| 顺昌县| 长治县| 治县。| 伊春市| 威海市| 丰宁| 尼玛县| 苏尼特左旗| 辉县市| 吉隆县| 邛崃市| 海门市| 贺兰县| 休宁县| 永吉县| 凤庆县| 黔南| 阿城市| 西林县| 交口县| 都江堰市| 澳门| 田阳县| 崇州市| 蓝田县| 铁岭县| 庄浪县| 昌乐县| 吉安市| 汕头市| 秭归县| 陇西县| 抚松县| 屏东市| 商都县| 潜山县| 金溪县| 弥渡县|