www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀] 這一章主要講解Windows CE.NET下注冊表相關技術。1、 對象存儲(object store)對象存儲是Windows CE默認的數據存儲機制。任何新創(chuàng)建的內核中都默認包含對象存儲器。對象存

 這一章主要講解Windows CE.NET下注冊表相關技術。

1、 對象存儲(object store)

對象存儲是Windows CE默認的數據存儲機制。任何新創(chuàng)建的內核中都默認包含對象存儲器。對象存儲的實質是在RAM中創(chuàng)建一個文件系統(tǒng),將文件保存在RAM中,這些文件來源于ROM。當設備啟動時,引導程序將ROM中的內核文件解壓并存放在RAM中。"windows"目錄就是基于對象存儲的。對象存儲的特點是文件可以壓縮、支持事務機制(和數據庫中的事務機制相似)、數據I/O相對較快。

A、對象存儲中的對象類型包括文件、目錄、數據庫、記錄、數據庫卷。CE為每個對象分配一個對象ID(CEOID)。訪問或者操作任何對象的前提是得到該對象ID。

B、CE能夠自動壓縮所有對象存儲中的文件(CE提供了一個選項供OEM設置是否能夠自動壓縮文件)。所以文件沒有壓縮或不壓縮的標志,但是有一個標志,標明此文件存在于ROM還是RAM中。一個文件最大長度可達到4 GB。

C、CE提供了三種文件系統(tǒng):基于ROM的文件系統(tǒng)、基于RAM的文件系統(tǒng)、FAT文件系統(tǒng)。

2、 注冊表(registry)

CE下注冊表和其它windows操作系統(tǒng)中注冊表概念和結構基本相同。

A、CE下注冊表限制:鍵名最大長度255個字符; 數據最大 4KB;子鍵深度最大值 16層。

B、根鍵有HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USERS。

C、操作注冊表函數:

i. 打開RegOpenKeyEx 和創(chuàng)建RegCreateKeyEx

ii. 讀RegQueryValueEx寫RegSetValueEx

iii. 枚舉入口或子鍵RegEnumValue、RegEnumKeyEx

iv. 刪除入口或子鍵RegDeleteValue、RegDeleteKey

v. 關閉RegCloseKey

3、CE下注冊表類型

分為基于RAM的注冊表和基于HIVE的注冊表。

A、基于RAM的注冊表,也叫基于對象存儲(oject storage)的注冊表。用于將注冊表數據全部保存在RAM中。

i. 從CE v1.0開始到CE .NET之前,僅采用此技術來保存注冊表。每個新創(chuàng)建的內核都默認采用此技術來保存注冊表。

ii. 適合頻繁熱啟動而不冷啟動的設備。系統(tǒng)關閉時提供低電源給RAM。如果斷電,重新啟動設備后,系統(tǒng)將從內核中重新讀取注冊表數據到RAM。當然以前保存的用戶數據已經丟失。

iii. 基于RAM的注冊表也能夠永久保存注冊標數據。CE提供了兩個機制。

1) 第一種機制的設計思路是在設備關閉前調用RegCopyFile函數將整個注冊表數據以文件形式保存到永久存儲器上。重新啟動設備時,調用RegRestoreFile函數將文件全部讀出到RAM中。但是這時必須一次熱啟動才能使恢復的注冊表數據有效。所以每次啟動就多出一次熱啟動。好在熱啟動非???,幾秒鐘的時間。

2) 另一種機制可以避免前一種機制的需要兩次啟動的缺點。但也有它的缺點。OEM(原始設備制造商)可以在OAL層編寫WriteRegistryToOEM and ReadRegistryFromOEM兩個函數,內核在啟動時會自動調用ReadRegistryFromOEM函數來讀注冊表數據。而應用程序調用RegFlushKey函數時,這個函數用調用WriteRegistryToOEM函數寫注冊表數據到永久存儲器上。這個機制避免了兩次啟動的缺陷。但問題出現在內核啟動時,調用ReadRegistryFromOEM之前文件系統(tǒng)驅動程序還沒加載,那就無法打開、讀取文件。CE幫助文件中說解決辦法是將從永久存儲器中讀取數據的代碼加到ReadRegistryFromOEM中。幫助中說的意思可不是調用ReadFile這么簡單的,因為文件系統(tǒng)驅動程 序還沒加載。

3) 個人建議:如果要采用基于RAM的注冊表保存機制,而且要求永久保存注冊表數據,使用第一種機制比較容易。

B、 基于HIVE的注冊表。用于將注冊表數據全部或部分保存到永久存儲器上。

i.它是從CE.NET開始采用的新技術。適合經常冷啟動而不熱啟動的設備。

ii.支持多用戶信息分別保存。當一個用戶登錄時,加載這個用戶的注冊表數據,注銷時卸載這個用戶的注冊表數據。

iii. HIVE是指一組鍵,包括子鍵、鍵值、數據。是保存或者加載注冊表數據的單位。分為系統(tǒng)HIVE(system hive)、用戶HIVE(uer hive)、引導HIVE(boot hive)。

1) 系統(tǒng)HIVE包含了關于系統(tǒng)的設置信息。具體保存注冊表中HKEY_LOCAL_MACHINE、HKEY_CLASSES_ROOT、HKEY_USERS鍵下所有數據。保存系統(tǒng)HIVE的文件的路徑在【HKEY_LOCAL_MACHINEinitBootVars】下,鍵名為"systemhive",鍵值為文件的路徑。默認為"Documents and Settingssystem.hv"。

2) 用戶HIVE包含了一個用戶的信息。具體保存注冊表中HKEY_CURRENT_USER鍵下所有數據。保存用戶HIVE的文件的路徑同樣為【HKEY_LOCAL_MACHINEinitBootVars】下,鍵名為"profiledir",鍵值為所有用戶HIVE的共同目錄。默認為"Documents and Settings",在這個目錄下包含了以每個用戶名命名的子目錄。子目錄里含有一個文件,默認文件名為user.hv。

3) 引導HIVE保存在ROM(內核)中。具體保存內容同系統(tǒng)HIVE一樣。當解壓內核并加載注冊表時,系統(tǒng)先將引導HIVE數據讀出,引導HIVE包含了永久存儲器的驅動程序和文件系統(tǒng)的驅動程序,這些驅動加載后,系統(tǒng)HIVE被加載,然后引導HIVE被釋放。因為引導HIVE被包含在內核中,所以存在一種情況:如果重新做了一個新內核,引導HIVE中的數據同系統(tǒng)HIVE可能不相同。那么系統(tǒng)該加載哪個版本好呢?為此,CE在生成每個內核時都做了一個標志。而系統(tǒng)HIVE也存在這樣一個標志,當加載引導HIVE時,如果引導HIVE和系統(tǒng)HIVE的標志不相同,系統(tǒng)會刪除系統(tǒng)HIVE文件,然后重新創(chuàng)建一個文件并從引導HIVE復制數據。

iv. 永久保存注冊表數據

Windows CE.NET采用新的注冊表保存技術――基于HIVE的注冊表,的確讓人很興奮,在這之前基于Windows CE的設備,大多數采用給RAM供電方式來保存注冊表數據,雖然也可以通過RegCopyFile函數永久保存,但畢竟啟動時還要再熱啟動一次,有了基于HIVE的技術,啟動時系統(tǒng)會自動加載數據,免去了熱啟動的麻煩,而且當內核更新升級時,你不用擔心保存在永久存儲器上的系統(tǒng)HIVE文件影響你新的內核,系統(tǒng)會自動判斷并刪除過時的系統(tǒng)HIVE文件。只有擁有了這樣的技術,基于CE的產品才算是一個真正的電腦。[!--empirenews.page--]

注:關于基于HIVE的注冊表的實現,暫不講解。

下面簡單說明 RegCopyFile和RegRestoreFile的用法。

///使用基于RAM的注冊表,利用RegCopyFile和RegRestoreFile

///實現永久保存注冊表數據。

#include

#include

CString strRegBackup = L"\hard disk\RegBackup.reg";

CString strTmp   = L"\windows\temp.reg";

////////導出。在系統(tǒng)關閉前。

if(! RegCopyFile(strTmp))   ///導出注冊表,用temp.reg做緩沖用。

{

return FALSE;

}

if(! CopyFile(strTmp, strRegBackup, FALSE)) ///把temp.reg再復制到RegBackup.reg

{

return FALSE;

}

/////////導入。在系統(tǒng)啟動時。

if(! CopyFile(strRegBackup, strTmp, FALSE))

{

return FALSE;

}

if(! RegRestoreFile(strTmp)) ///恢復注冊表

{

return FALSE;

}

if(! KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL)) ///重新啟動

{

return FALSE;

}

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯合牽頭組建的NVI技術創(chuàng)新聯盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現場 NVI技術創(chuàng)新聯...

關鍵字: VI 傳輸協議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉