wince在CF卡上實現冷啟動自動儲存註冊表(Windows CE5.0)

來源:互聯網
上載者:User
倒騰了幾天,在CE5.0上實現了CF卡通過Hive-based registry斷電儲存註冊表,我採用的是FAT檔案系統.
     開門見山,先給出我的步驟:
     (1)在PB的Catalog中將HIVE-based Registry加入到OS中.
       (2)在platform.reg中添加如下註冊表欄位:
           ; HIVE BOOT SECTION
[HKEY_LOCAL_MACHINE/init/BootVars]
       "SYSTEMHIVE"="Documents and Settings//system.hv"
       "PROFILEDIR"="Documents and Settings"     
       "Start DevMgr"=dword:1
       "Registryflags"=dword:1
    [HKEY_LOCAL_MACHINE/init/BootVars]
        "DefaultUser"="default"
[HKEY_LOCAL_MACHINE/System/StorageManager/FATFS]
    "FriendlyName"="FAT FileSystem"
    "Dll"="fatfsd.dll"
    "Flags"=dword:00000064
    "Paging"=dword:1
    "EnableCache"=dword:1
    "CacheSize"=dword:0
    "Util"="fatutil.dll"
    "CacheDll"="diskcache.dll"

[HKEY_LOCAL_MACHINE/Drivers/PCMCIA/ATADisk]
    "Dll"="ATADISK.DLL"
    "Prefix"="DSK"
    "Ioctl"=dword:4
    "Profile"="PCMCIA"
    ; Indicate we are a power manageable interface and a storage driver
    "IClass"=multi_sz:"{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}","{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"

[HKEY_LOCAL_MACHINE/Drivers/PCMCIA/Detect/50]
   "Dll"="ATADISK.DLL"
   "Entry"="DetectATADisk"

[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/HDProfile]
    "MountAsRoot"=dword:1
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/HDProfile]
    "MountAsBootable"=dword:1

[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/HDProfile]
    "Name"="IDE Hard Disk Drive"
    "Folder"="hard disk"

[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/HDProfile/FATFS]
    "EnableCacheWarm"=dword:0
; END HIVE BOOT SECTION
        
          接下來分析一下其中的原理.wince下的註冊表分為兩部分:boot.hv和system.hv.前者是啟動時的登錄機碼,後者是系統登錄機碼.所謂的HIVE註冊表就是先載入boot.hv,把註冊表儲存所在的儲存驅動和檔案系統先載入;然後再載入system.hv,也就是從磁碟上去讀系統的登錄機碼.在啟動時載入boot.hv的標籤就是;HIVE BOOT SECTION 和;END BOOT SECTION.
  在[HKEY_LOCAL_MACHINE/init/BootVars]中"SYSTEMHIVE"是指儲存system.hv的路徑,"Registryflags"=dword:1是為了在修改了註冊表後自動重新整理從而儲存.因為HIVE註冊表也是在記憶體中啟動並執行,不同的是啟動的時候會從磁碟上去讀改動的表項,所以你做的的註冊表改動也是在記憶體中做的,這個時候如果你不去將記憶體中的數值儲存到磁碟上,那麼這些改動還是會丟失的.當然也可以編程實現(調用RegflushKey).在實現HIVE過程中,要實現兩部分:儲存HIVE介質的驅動以及檔案系統的相應項.由於我的儲存是在CF卡(相當於硬碟)上實現的,所以把platform.reg裡的ATADisk驅動和儲存管理中StorageManager/Profiles/HDProfile相關項目都加進去,接著把System/StorageManager/FATFS加入,完成載入FAT檔案系統.
  收穫的幾點:1.實現HIVE設定檔改動包括三部分:(1)bootvars表項,作用是儲存的位置,多使用者以及自動重新整理機制.(2)儲存介質的驅動,在我的情況下也就是硬碟的驅動項;(3)檔案系統的載入(FATFS).
  2.看到一些文章在儲存驅動中添加"flags"=dword:1000,作用是只載入一次.
  3. "MountAsBootable"=dword:1   這句等價於4.2下的mountflag=dword:2
    這句話用來指明註冊表儲存在該磁碟驅動系統下.我驗證了wince5.0下mountflag=dword:2仍然有效. 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.