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

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀] 這一章主要講解Windows CE.NET下注冊(cè)表相關(guān)技術(shù)。1、 對(duì)象存儲(chǔ)(object store)對(duì)象存儲(chǔ)是Windows CE默認(rèn)的數(shù)據(jù)存儲(chǔ)機(jī)制。任何新創(chuàng)建的內(nèi)核中都默認(rèn)包含對(duì)象存儲(chǔ)器。對(duì)象存

 這一章主要講解Windows CE.NET下注冊(cè)表相關(guān)技術(shù)。

1、 對(duì)象存儲(chǔ)(object store)

對(duì)象存儲(chǔ)是Windows CE默認(rèn)的數(shù)據(jù)存儲(chǔ)機(jī)制。任何新創(chuàng)建的內(nèi)核中都默認(rèn)包含對(duì)象存儲(chǔ)器。對(duì)象存儲(chǔ)的實(shí)質(zhì)是在RAM中創(chuàng)建一個(gè)文件系統(tǒng),將文件保存在RAM中,這些文件來(lái)源于ROM。當(dāng)設(shè)備啟動(dòng)時(shí),引導(dǎo)程序?qū)OM中的內(nèi)核文件解壓并存放在RAM中。"windows"目錄就是基于對(duì)象存儲(chǔ)的。對(duì)象存儲(chǔ)的特點(diǎn)是文件可以壓縮、支持事務(wù)機(jī)制(和數(shù)據(jù)庫(kù)中的事務(wù)機(jī)制相似)、數(shù)據(jù)I/O相對(duì)較快。

A、對(duì)象存儲(chǔ)中的對(duì)象類(lèi)型包括文件、目錄、數(shù)據(jù)庫(kù)、記錄、數(shù)據(jù)庫(kù)卷。CE為每個(gè)對(duì)象分配一個(gè)對(duì)象ID(CEOID)。訪問(wèn)或者操作任何對(duì)象的前提是得到該對(duì)象ID。

B、CE能夠自動(dòng)壓縮所有對(duì)象存儲(chǔ)中的文件(CE提供了一個(gè)選項(xiàng)供OEM設(shè)置是否能夠自動(dòng)壓縮文件)。所以文件沒(méi)有壓縮或不壓縮的標(biāo)志,但是有一個(gè)標(biāo)志,標(biāo)明此文件存在于ROM還是RAM中。一個(gè)文件最大長(zhǎng)度可達(dá)到4 GB。

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

2、 注冊(cè)表(registry)

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

A、CE下注冊(cè)表限制:鍵名最大長(zhǎng)度255個(gè)字符; 數(shù)據(jù)最大 4KB;子鍵深度最大值 16層。

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

C、操作注冊(cè)表函數(shù):

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

ii. 讀RegQueryValueEx寫(xiě)RegSetValueEx

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

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

v. 關(guān)閉RegCloseKey

3、CE下注冊(cè)表類(lèi)型

分為基于RAM的注冊(cè)表和基于HIVE的注冊(cè)表。

A、基于RAM的注冊(cè)表,也叫基于對(duì)象存儲(chǔ)(oject storage)的注冊(cè)表。用于將注冊(cè)表數(shù)據(jù)全部保存在RAM中。

i. 從CE v1.0開(kāi)始到CE .NET之前,僅采用此技術(shù)來(lái)保存注冊(cè)表。每個(gè)新創(chuàng)建的內(nèi)核都默認(rèn)采用此技術(shù)來(lái)保存注冊(cè)表。

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

iii. 基于RAM的注冊(cè)表也能夠永久保存注冊(cè)標(biāo)數(shù)據(jù)。CE提供了兩個(gè)機(jī)制。

1) 第一種機(jī)制的設(shè)計(jì)思路是在設(shè)備關(guān)閉前調(diào)用RegCopyFile函數(shù)將整個(gè)注冊(cè)表數(shù)據(jù)以文件形式保存到永久存儲(chǔ)器上。重新啟動(dòng)設(shè)備時(shí),調(diào)用RegRestoreFile函數(shù)將文件全部讀出到RAM中。但是這時(shí)必須一次熱啟動(dòng)才能使恢復(fù)的注冊(cè)表數(shù)據(jù)有效。所以每次啟動(dòng)就多出一次熱啟動(dòng)。好在熱啟動(dòng)非??欤瑤酌腌姷臅r(shí)間。

2) 另一種機(jī)制可以避免前一種機(jī)制的需要兩次啟動(dòng)的缺點(diǎn)。但也有它的缺點(diǎn)。OEM(原始設(shè)備制造商)可以在OAL層編寫(xiě)WriteRegistryToOEM and ReadRegistryFromOEM兩個(gè)函數(shù),內(nèi)核在啟動(dòng)時(shí)會(huì)自動(dòng)調(diào)用ReadRegistryFromOEM函數(shù)來(lái)讀注冊(cè)表數(shù)據(jù)。而應(yīng)用程序調(diào)用RegFlushKey函數(shù)時(shí),這個(gè)函數(shù)用調(diào)用WriteRegistryToOEM函數(shù)寫(xiě)注冊(cè)表數(shù)據(jù)到永久存儲(chǔ)器上。這個(gè)機(jī)制避免了兩次啟動(dòng)的缺陷。但問(wèn)題出現(xiàn)在內(nèi)核啟動(dòng)時(shí),調(diào)用ReadRegistryFromOEM之前文件系統(tǒng)驅(qū)動(dòng)程序還沒(méi)加載,那就無(wú)法打開(kāi)、讀取文件。CE幫助文件中說(shuō)解決辦法是將從永久存儲(chǔ)器中讀取數(shù)據(jù)的代碼加到ReadRegistryFromOEM中。幫助中說(shuō)的意思可不是調(diào)用ReadFile這么簡(jiǎn)單的,因?yàn)槲募到y(tǒng)驅(qū)動(dòng)程 序還沒(méi)加載。

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

B、 基于HIVE的注冊(cè)表。用于將注冊(cè)表數(shù)據(jù)全部或部分保存到永久存儲(chǔ)器上。

i.它是從CE.NET開(kāi)始采用的新技術(shù)。適合經(jīng)常冷啟動(dòng)而不熱啟動(dòng)的設(shè)備。

ii.支持多用戶(hù)信息分別保存。當(dāng)一個(gè)用戶(hù)登錄時(shí),加載這個(gè)用戶(hù)的注冊(cè)表數(shù)據(jù),注銷(xiāo)時(shí)卸載這個(gè)用戶(hù)的注冊(cè)表數(shù)據(jù)。

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

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

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

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

iv. 永久保存注冊(cè)表數(shù)據(jù)

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

注:關(guān)于基于HIVE的注冊(cè)表的實(shí)現(xiàn),暫不講解。

下面簡(jiǎn)單說(shuō)明 RegCopyFile和RegRestoreFile的用法。

///使用基于RAM的注冊(cè)表,利用RegCopyFile和RegRestoreFile

///實(shí)現(xiàn)永久保存注冊(cè)表數(shù)據(jù)。

#include

#include

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

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

////////導(dǎo)出。在系統(tǒng)關(guān)閉前。

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

{

return FALSE;

}

if(! CopyFile(strTmp, strRegBackup, FALSE)) ///把temp.reg再?gòu)?fù)制到RegBackup.reg

{

return FALSE;

}

/////////導(dǎo)入。在系統(tǒng)啟動(dòng)時(shí)。

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

{

return FALSE;

}

if(! RegRestoreFile(strTmp)) ///恢復(fù)注冊(cè)表

{

return FALSE;

}

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

{

return FALSE;

}

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

上海2025年9月5日 /美通社/ -- 由紐倫堡會(huì)展(上海)有限公司舉辦的上海國(guó)際嵌入式會(huì)議將于 2025 年 10 月 16-17 日在上海世博展覽館舉辦。 此次會(huì)議將由三個(gè)版塊組成:嵌入式技術(shù)會(huì)議、汽...

關(guān)鍵字: 嵌入式 CE CHINA EMBEDDED

上海2025年7月24日 /美通社/ -- 近日,藍(lán)科集團(tuán)(Lucanet AG)全球首席執(zhí)行官Elias Apel先生和藍(lán)科中國(guó)總經(jīng)理張馳先生一行拜訪和接待了中國(guó)地區(qū)多家合作伙伴與優(yōu)秀企業(yè)客戶(hù),旨在深入了解中國(guó)市場(chǎng)與用...

關(guān)鍵字: 智能化 CAN NET 自動(dòng)化

上海2025年7月23日 /美通社/ --?近日,Lucanet集團(tuán)年度旗艦活動(dòng) "Lucanet World 2025" (即藍(lán)科全球客戶(hù)大會(huì))在柏林盛大舉行。來(lái)自全球各地近千位集團(tuán)首席財(cái)務(wù)官、技術(shù)決策者等高管以及財(cái)務(wù)...

關(guān)鍵字: AI CAN NET BSP

北京市中國(guó)國(guó)際展覽中心(順義館)先進(jìn)制造館 W2 展館 D07 展位 作為鏈博會(huì)先進(jìn)制造鏈專(zhuān)業(yè)委員會(huì)主席單位,發(fā)揮"鏈主"引領(lǐng)和賦能作用 集中呈現(xiàn)西門(mén)子覆蓋產(chǎn)品...

關(guān)鍵字: 西門(mén)子 BSP 數(shù)字化 CE

廣州 2025年7月4日 /美通社/ -- 日前,在德國(guó)慕尼黑機(jī)器人及自動(dòng)化技術(shù)展覽會(huì)(Automatica)期間,國(guó)際獨(dú)立第三方檢測(cè)、檢驗(yàn)和認(rèn)證機(jī)構(gòu)德國(guó)萊茵TÜ...

關(guān)鍵字: 自動(dòng)化 CE 工業(yè)機(jī)器 指令

-2025年智慧城市博覽會(huì)將以史上最大規(guī)模召開(kāi),呼吁城市成為變革推動(dòng)者 西班牙巴塞羅那 2025年7月4日 /美通社/ -- 由巴塞羅那會(huì)展中心(Fira de Barc...

關(guān)鍵字: 智慧城市 CE RC AI

世界首次開(kāi)發(fā)出引領(lǐng)智能手機(jī)潮流的新一代技術(shù)"Cu-Post" 提高電路集成度,實(shí)現(xiàn)半導(dǎo)體基板小型化、高配置化……改善發(fā)熱 到2030年為止,...

關(guān)鍵字: 基板 TE LG CE

首屆評(píng)獎(jiǎng)由Mobile World Capital主辦,合作方包括B Lab Spain、GSMA Foundry、西班牙國(guó)家數(shù)字化與人工智能秘書(shū)處(SEDIA)和R...

關(guān)鍵字: API CE 可持續(xù)發(fā)展 人工智能

深圳 2025年5月28日 /美通社/ -- 2025年5月28日,榮耀400新品發(fā)布會(huì)現(xiàn)場(chǎng),榮耀CEO李健發(fā)表主旨演講《真實(shí)就是力量》,用三個(gè)真實(shí)故事闡述了"榮耀三部曲"...

關(guān)鍵字: 榮耀 AI 影像 CE

澳門(mén) 2025年5月28日 /美通社/ -- 2025年5月24日,第五屆BEYOND國(guó)際科技創(chuàng)新博覽會(huì)(BEYOND Expo 2025)在澳門(mén)圓滿收官。本屆博覽會(huì)精心策劃了一系列豐富多彩的活動(dòng),生動(dòng)且全面地詮釋了&...

關(guān)鍵字: CE 阿里巴巴 人工智能 創(chuàng)始人
關(guān)閉