在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Windows CE下的注冊(cè)表簡(jiǎn)介

            Windows CE下的注冊(cè)表簡(jiǎn)介

            作者: 時(shí)間:2011-02-25 來(lái)源:網(wǎng)絡(luò) 收藏

            與桌面Windows一樣,Windows CE也使用注冊(cè)表(Registry)來(lái)保存應(yīng)用程序、驅(qū)動(dòng)程序和用戶的設(shè)定以及其他一些配置信息。Windows CE注冊(cè)表也采用樹(shù)形結(jié)構(gòu)來(lái)管理配置信息,由于Windows CE注冊(cè)表的結(jié)構(gòu)和功能與桌面Windows幾乎一樣,在這里就不詳細(xì)介紹了,讀者可以參考其它關(guān)于注冊(cè)表的資料。
            Windows CE支持四個(gè)根鍵,描述如下:


            鍵名 描述
            HKEY_LOCAL_MACHINE 硬件和驅(qū)動(dòng)配置數(shù)據(jù)
            HKEY_CURRENT_USER 用戶配置數(shù)據(jù)
            HKEY_CLASSES_ROOT OLE和文件類型匹配配置數(shù)據(jù)
            HKEY_USERS 適用于所有用戶的數(shù)據(jù)


            由于系統(tǒng)的特點(diǎn),一些設(shè)備是沒(méi)有外存的。因此Windows CE的注冊(cè)表提供了兩種實(shí)現(xiàn)方式:基于RAM的注冊(cè)表(RAM-Based Registry)和基于Hive的注冊(cè)表(Hive-Based Registry)。我們可以選擇在Windows CE中使用任何一種注冊(cè)表,注冊(cè)表類型對(duì)于用戶和應(yīng)用程序來(lái)說(shuō)是透明的。


            ◎ 基于RAM的注冊(cè)表
            正如其名,基于RAM的注冊(cè)表把整個(gè)注冊(cè)表作為一個(gè)對(duì)象存儲(chǔ)堆存放在系統(tǒng)的內(nèi)存中。這意味著如果對(duì)系統(tǒng)進(jìn)行冷啟動(dòng)或者系統(tǒng)斷電,對(duì)注冊(cè)表的所有改動(dòng)都會(huì)丟失。
            如果使用基于RAM的注冊(cè)表,對(duì)注冊(cè)表的讀寫(xiě)訪問(wèn)操作會(huì)變得非常高效。因此基于RAM的注冊(cè)表比較適用于沒(méi)有外部存儲(chǔ),而且有電池保存內(nèi)存數(shù)據(jù)(battery-backed RAM)的設(shè)備。如果有外存且經(jīng)常冷啟動(dòng)的設(shè)備采用基于RAM的注冊(cè)表,則需要在系統(tǒng)斷電的時(shí)候?qū)ψ?cè)表進(jìn)行保存,等系統(tǒng)再次啟動(dòng)時(shí)對(duì)保存的注冊(cè)表進(jìn)行還原。


            Windows CE提供了兩種方法用來(lái)斷電保存基于RAM的注冊(cè)表:


            1. Windows CE提供了兩個(gè)系統(tǒng)API用來(lái)保存和還原整個(gè)注冊(cè)表,它們的原形如下:
            BOOL RegCopyFile(
            LPCWSTR lpszFile // 保存注冊(cè)表信息的文件的名字
            );
            BOOL RegRestoreFile(
            LPCWSTR lpszFile // 保存注冊(cè)表信息的文件的名字
            );
            如果要保存和恢復(fù)注冊(cè)表,我們只需要在系統(tǒng)斷電的時(shí)候調(diào)用RegCopyFile函數(shù)將整個(gè)注冊(cè)表保存為外存上的一個(gè)文件。當(dāng)系統(tǒng)重新啟動(dòng)時(shí),我們?cè)僬{(diào)用RegRestoreFile函數(shù)將文件全部讀出RAM中,然后再熱啟動(dòng)系統(tǒng),我們保存得注冊(cè)表就可以生效了。值得注意的是這次熱啟動(dòng)是必須的,因?yàn)橹挥性谙到y(tǒng)啟動(dòng)的時(shí)候才會(huì)去檢測(cè)RegRestoreFile放在RAM里的注冊(cè)表信息。這種方法的優(yōu)點(diǎn)是完全可以使用應(yīng)用程序來(lái)實(shí)現(xiàn)基于RAM的注冊(cè)表的保存,而且這種方法相對(duì)簡(jiǎn)單。但是此方法的缺點(diǎn)是需要兩次啟動(dòng)。因此效率相對(duì)比較低。


            2. 第二種方法需要OEM的參與,OEM可以在BSP的OAL層中實(shí)現(xiàn)WriteRegistryToOEM和ReadRegistryFromOEM兩個(gè)函數(shù),它們的聲明為:
            DWORD ReadRegistryFromOEM(
            DWORD dwFlags, // 參數(shù), REG_READ_BYTES_START表示讀新的注冊(cè)表
            LPBYTE lpData, // 指向注冊(cè)表數(shù)據(jù)的緩沖區(qū),由OS分配
            DWORD cbData // 緩沖區(qū)的大小
            );
            BOOL WriteRegistryToOEM(
            DWORD dwFlags, // 參數(shù),REG_WRITE_BYTES_START表示寫(xiě)新的注冊(cè)表
            LPBYTE lpData, // 指向注冊(cè)表數(shù)據(jù)的緩沖區(qū),由OS分配
            DWORD cbData // 緩沖區(qū)的大小,0表示到達(dá)注冊(cè)表尾部
            );
            Windows CE會(huì)在系統(tǒng)啟動(dòng)和關(guān)閉的時(shí)候調(diào)用這兩個(gè)函數(shù)來(lái)保存和恢復(fù)注冊(cè)表。此種方法雖然可以避免兩次啟動(dòng),但是困難的地方是ReadRegistryFromOEM函數(shù)的實(shí)現(xiàn)比較困難,因?yàn)樵谙到y(tǒng)啟動(dòng)的時(shí)候,塊設(shè)備驅(qū)動(dòng)和文件系統(tǒng)的驅(qū)動(dòng)都還沒(méi)有加載,因此不能使用CreateFile,ReadFile這樣的文件系統(tǒng)API來(lái)實(shí)現(xiàn)ReadRegistryFromOEM函數(shù),只能使用一些更底層的操作來(lái)實(shí)現(xiàn)。

            ◎ 基于Hive的注冊(cè)表
            自從Windows CE 4.0之后,Windows CE提供了基于Hive的注冊(cè)表?;贖ive的注冊(cè)表把注冊(cè)表數(shù)據(jù)存放在文件系統(tǒng)的文件上,這種文件被稱作蜂箱Hive。這就意味著不再需要在系統(tǒng)斷電和啟動(dòng)時(shí)進(jìn)行保存恢復(fù)注冊(cè)表操作。
            Hive是注冊(cè)表中的一組鍵,子鍵和值。Hive是文件系統(tǒng)上表現(xiàn)為單個(gè)文件。Windows CE中有三種Hive。
            類型 文件 描述
            Boot hive ROM中的Boot.hv HKEY_LOCAL_MACHINE, HKEY_CLASSES_ROOT, HKEY_USERS中的所有數(shù)據(jù)。只在啟動(dòng)時(shí)使用。
            System hive 由OEM決定 (通常是System.hv) HKEY_LOCAL_MACHINE, HKEY_CLASSES_ROOT, HKEY_USERS中的所有數(shù)據(jù)。包含設(shè)備范圍內(nèi)不隨著用戶改變而改變的數(shù)據(jù)。
            User hive User.hv HKEY_CURRENT_USER下的所有數(shù)據(jù)。 包含用戶特有的設(shè)置,每個(gè)用戶都有一個(gè)單獨(dú)的User.hv。
            基于Hive的注冊(cè)表適用于對(duì)于有永久存儲(chǔ)并且需要經(jīng)常冷啟動(dòng)的設(shè)備。我們也可以看到,基于Hive的注冊(cè)表把系統(tǒng)數(shù)據(jù)和用戶數(shù)據(jù)分開(kāi)存放,這就意味著基于Hive的注冊(cè)表還提供多用戶支持。對(duì)于每一個(gè)用戶,可以提供不同的User.hv,當(dāng)用戶登錄時(shí)加載相應(yīng)的User.hv,從而達(dá)到多用戶目的。

            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉