日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

蜂窝注册表和永久存储

發(fā)布時(shí)間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蜂窝注册表和永久存储 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

WindowsCE有兩種注冊(cè)表,一種是基于RAM的,一種是基于蜂窩的注冊(cè)表;WindowsCE會(huì)默認(rèn)使用前者。如果是使用前者,PB在編譯的時(shí)候會(huì)先把common.reg、platform.reg、project.reg及所有的.reg文件的內(nèi)容合并到reginit.ini文件,然后再將reginit.ini文件壓縮成default.fdf的文件,放置到WindowsCE的操作系統(tǒng)映像文件nk.bin中去。在操作系統(tǒng)啟動(dòng)的時(shí)候,default.fdf文件會(huì)被解壓到RAM中形成基于RAM的注冊(cè)表,既然是基于RAM的注冊(cè)表,那么對(duì)它所有的改變都會(huì)在斷電后消失。

??????? 如何才能使操作系統(tǒng)運(yùn)行起來(lái)后所有的改動(dòng)在斷電時(shí)都不丟失而在以后重新啟動(dòng)時(shí)永久保存呢?答案就是利用Flash、DOC、硬盤、SD/MCC等永久存儲(chǔ)設(shè)備,將修改后的注冊(cè)表保存到這些永久存儲(chǔ)設(shè)備上。但是如果把所有注冊(cè)表都放置到永久存儲(chǔ)設(shè)備上,那么WindowsCE又怎么能在沒有加載存儲(chǔ)設(shè)備驅(qū)動(dòng)的情況下讀到注冊(cè)表呢?且一般情況下,加載存儲(chǔ)設(shè)備驅(qū)動(dòng)也需要注冊(cè)表的支持!那么怎么才能做到呢?這就是蜂窩注冊(cè)表所想到的。

??????? 蜂窩注冊(cè)表把WindowsCE的注冊(cè)表分成兩部分,第一部分是稱做boot.hv的注冊(cè)表,里面的東西是一些在沒有拿到保存在磁盤注冊(cè)表之前引導(dǎo)時(shí)需要的一些設(shè)置,這部分的注冊(cè)表和基于RAM的一樣的,修改之后如果斷電沒有了,所以這部分的注冊(cè)表項(xiàng)都是不需要改動(dòng)的,需要改動(dòng)的都放到第二部分;第二部分是system.hv和user.hv注冊(cè)表,也就是一直提到的要放到永久存儲(chǔ)設(shè)備上的注冊(cè)表。PB在編譯的時(shí)候會(huì)根據(jù).reg文件中的注釋來(lái)判斷哪些注冊(cè)表項(xiàng)放到boot.hv中,要放置到boot.hv中的注冊(cè)表項(xiàng)必須放置到下列注釋對(duì)之間:

; HIVE BOOT SECTION

.......

......

; END HIVE BOOT SECTION

?

夾在這個(gè)注釋對(duì)之間的注冊(cè)表項(xiàng),PB在編譯的時(shí)候會(huì)把它們放置到boot.hv文件中去,其他的注冊(cè)表項(xiàng)會(huì)分別被放置到default.hv和user.hv文件中去。WindowsCE在啟動(dòng)的第一階段先把所有的.hv文件加載到RAM中,然后打開boot.hv拿到必要的注冊(cè)表設(shè)置,其中包括了如何加載system.hv以及永久存儲(chǔ)設(shè)備的驅(qū)動(dòng)的注冊(cè)表設(shè)置,所以那些和加載永久存儲(chǔ)設(shè)備相關(guān)的驅(qū)動(dòng)都要放到boot.hv中去,如FAT文件驅(qū)動(dòng),mspart分區(qū)驅(qū)動(dòng)等,有一點(diǎn)需要特別注意的就是如果你的系統(tǒng)使用的是BinFS文件系統(tǒng),且device.exe位于NK.bin中,那么一定要在操作系統(tǒng)啟動(dòng)的第一階段保證BinFS文件系統(tǒng)可用,否則系統(tǒng)就不可能從永久存儲(chǔ)設(shè)備加載system.hv了。

??????? WindowsCE在啟動(dòng)的時(shí)候,永久存儲(chǔ)設(shè)備上并不存在任何注冊(cè)表文件(.hv),這個(gè)時(shí)候WindowsCE會(huì)將內(nèi)存的default.hv和user.hv文件復(fù)制到注冊(cè)表的BootVars鍵制定的地方,且default.hv往往會(huì)被重命名為system.hv,WindowsCE在第二次啟動(dòng)及以后的啟動(dòng)時(shí),會(huì)先檢查永久存儲(chǔ)設(shè)備上的.hv文件是不是和RAM中的一致,不一致的話就加載永久存儲(chǔ)設(shè)備上的注冊(cè)表項(xiàng)。

??????? 需要注意的是,蜂窩注冊(cè)表也是在RAM中運(yùn)行的,不同的是WindowsCE在啟動(dòng)時(shí)會(huì)到永久存儲(chǔ)設(shè)備上讀取改動(dòng)的注冊(cè)表項(xiàng),因?yàn)檫@樣才能保證速度,所以任何對(duì)注冊(cè)表的改動(dòng)都是在內(nèi)存中進(jìn)行的,如果不想辦法將內(nèi)存中的注冊(cè)表保存到磁盤上,那么這些改動(dòng)還是會(huì)丟失的,通常有兩種方法避免丟失,一種方法是通過應(yīng)用程序調(diào)用RegFlushKey函數(shù),另一種方法就是在注冊(cè)表中將RegistryFlags注冊(cè)鍵的值設(shè)置為1讓系統(tǒng)在每次改動(dòng)后自動(dòng)保存注冊(cè)表。

?

[HKEY_LOCAL_MACHINE\init\BootVars]
? ?"SYSTEMHIVE"="Documents and Settings\\system.hv"
? ?"PROFILEDIR"="Documents and Settings"
? ?"Start DevMgr"=dword:1
? ?"Flags"=dword:1000
? ?"RegistryFlags"=dword:1


總結(jié)

以上是生活随笔為你收集整理的蜂窝注册表和永久存储的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。