WinCE的嵌入式系統(tǒng)注冊表的研究

摘要:本文首先講述了 Windows CE注冊表的重要性,它對整個嵌入式系統(tǒng)的正常運行起著關(guān)鍵性作用。然后又介紹了兩種注冊表存儲方式,并著重講述了基于 HIVE的注冊表。詳細闡述了基于 HIVE的注冊表的保存數(shù)據(jù)方式及實現(xiàn) HIVE注冊表的方法。最后給出了系統(tǒng)成功修改注冊表的實現(xiàn)方法。本文的研究對其它操作系統(tǒng)的注冊表修改也具有著借鑒意義。

0 引言

嵌入式操作系統(tǒng) Windows CE和桌面操作系統(tǒng)一樣使用注冊表(Registry)來保存應(yīng)用程序、驅(qū)動程序和用戶的設(shè)定以及其他一些配置信息,通常還存儲著操作系統(tǒng)調(diào)用程序的狀態(tài)信息,所以注冊表起著非常重要的作用,它是 Windows CE操作系統(tǒng)的核心。在沒有注冊表的情況下,操作系統(tǒng)將不能獲得必需的信息來運行和控制附屬的設(shè)備和應(yīng)用程序及正確響應(yīng)用戶的輸入[1][2]。

1 Windows CE注冊表簡介

Windows CE的注冊表結(jié)構(gòu)和其他版本的 Windows操作系統(tǒng)的注冊表結(jié)構(gòu)是類似的。注冊表是一個包括主關(guān)鍵字子樹的集合,它和文件目錄樹一樣具有層次結(jié)構(gòu)。每個子樹又由更低層的子樹、鍵以及鍵值組成。鍵相當(dāng)于文件系統(tǒng)的目錄,每個鍵包含若干鍵值項。而鍵值項相當(dāng)于文件系統(tǒng)末端的文件,它由鍵值名、數(shù)據(jù)類型和鍵值組成。鍵值就是注冊表存儲的數(shù)據(jù)。

Windows CE對注冊表的值有一些限制:鍵或者鍵值項的名字最多為 255個字符,數(shù)據(jù)最大為4K,鍵嵌套層次最多為 16層。所以在使用注冊表編程時,要盡量使鍵和鍵值項占用最小的空間。另外,需要注意的是,在注冊表中,鍵值項比鍵值占用更大的存儲空間。

Windows CE注冊表包括4個根鍵 [2],如表1所示。

表 1 Windows CE注冊表根鍵

2 Windows CE注冊表類型

由于嵌入式系統(tǒng)的特點,一些嵌入式設(shè)備是沒有外存的。因此 Windows CE的注冊表提供了兩種實現(xiàn)方式:基于對象存儲的注冊表(RAM-Based Registry)和基于 Hive的注冊表(Hive-Based Registry) [3]。我們可以在 Windows CE中使用任何一種注冊表,注冊表類型對于用戶和應(yīng)用程序來說都是透明的。基于RAM的注冊表在經(jīng)常熱啟動的設(shè)備上是非常高效的,而在經(jīng)常冷啟動的設(shè)備上,性能卻很令人失望,最適合有電池后備的個人電子消費類產(chǎn)品。對于經(jīng)常冷啟動或者不怎么使用熱啟動方式的設(shè)備來說,基于 hive的注冊表是非常高效的,最適合永久性的存儲器和多用戶環(huán)境下使用。

2.1 基于 RAM的注冊表

顧名思義,基于 RAM的注冊表把整個注冊表作為一個對象存儲堆放在 RAM中。這就意味著如果系統(tǒng)中斷對 RAM的電池供電,對注冊表的所有改動都會丟失。也就是說,它們的有效性和 RAM中數(shù)據(jù)的有效性是一致的。但是使用 RAM注冊表,對注冊表的讀寫訪問操作非常的快速高效。在舊版本的 Windows CE中,大量應(yīng)用了基于 RAM的注冊表。如果有外存且需要經(jīng)常冷啟動的設(shè)備采用基于 RAM的注冊表,則需要在系統(tǒng)斷電的時候?qū)ψ员磉M行保存,等系統(tǒng)再次啟動時對保存的注冊表進行還原。

2.2 基于 HIVE的注冊表

HIVE系統(tǒng)包含了不屬于任何用戶信息的系統(tǒng)設(shè)置。HIVE系統(tǒng)由 OEM層調(diào)用。通常 hive文件為System.hv,但是它的存儲位置可能隨著平臺而變化。這種存儲方式使系統(tǒng)在斷電前后無須備份和恢復(fù)注冊表數(shù)據(jù),這使得系統(tǒng)冷啟動時速度更快。

基于HIVE結(jié)構(gòu)的注冊表被分為兩部分存儲:系統(tǒng)HIVE,存儲所有的系統(tǒng)數(shù)據(jù);用戶HIVE,存儲對特定用戶的所有相關(guān)數(shù)據(jù)。一個多用戶系統(tǒng)將包括幾個用戶HIVE。當(dāng)一個用戶登錄時,相應(yīng)的用戶 HIVE就會被激活,當(dāng)用戶退出時,相應(yīng)的用戶 HIVE也會被撤銷。所有的用戶 HIVE都用 USER.hv來命名,并且被放在不同的用戶目錄中,每個目錄都是以它屬于的用戶的用戶名來命名的。

注冊表中的HKEY_LOCAL_MACHINEinitBootVars下的鍵值項ProfileDir存儲著所有用戶目錄的位置。HKEY_LOCAL_MACHINEinitBootVars下的鍵值項 SystemHive存儲著系統(tǒng)HIVE的文件路徑和文件名。

來源:21IC電子網(wǎng)


微信掃描分享本文到朋友圈
掃碼關(guān)注5G通信官方公眾號,免費領(lǐng)取以下5G精品資料
  • 1、回復(fù)“YD5GAI”免費領(lǐng)取《中國移動:5G網(wǎng)絡(luò)AI應(yīng)用典型場景技術(shù)解決方案白皮書
  • 2、回復(fù)“5G6G”免費領(lǐng)取《5G_6G毫米波測試技術(shù)白皮書-2022_03-21
  • 3、回復(fù)“YD6G”免費領(lǐng)取《中國移動:6G至簡無線接入網(wǎng)白皮書
  • 4、回復(fù)“LTBPS”免費領(lǐng)取《《中國聯(lián)通5G終端白皮書》
  • 5、回復(fù)“ZGDX”免費領(lǐng)取《中國電信5GNTN技術(shù)白皮書
  • 6、回復(fù)“TXSB”免費領(lǐng)取《通信設(shè)備安裝工程施工工藝圖解
  • 7、回復(fù)“YDSL”免費領(lǐng)取《中國移動算力并網(wǎng)白皮書
  • 8、回復(fù)“5GX3”免費領(lǐng)取《R1623501-g605G的系統(tǒng)架構(gòu)1
  • 本周熱點本月熱點

     

      最熱通信招聘

      最新招聘信息