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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

How to Use Hive-based Registry IN WINCE.NET

發(fā)布時間:2023/12/10 asp.net 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 How to Use Hive-based Registry IN WINCE.NET 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
摘要:

WINCE本身是一個完全在內(nèi)存中運行的系統(tǒng)。每次啟動都需要把NK.BIN拷貝到內(nèi)存中相對應(yīng)的地址。這樣的系統(tǒng)就不需要了系統(tǒng)維護,但是如何“永久”的保存設(shè)置就成了問題。本文將介紹如何在Wince中實現(xiàn)設(shè)置的永久保存。


關(guān)鍵字:

WINCE、嵌入式操作系統(tǒng)、Hive-based Registry


作者

Tony

Email:gzci@163.com

Windows CE .NET是Windows CE 3.0的后繼產(chǎn)品。Windows CE .NET為嵌入式市場從新設(shè)計,為快速建立下一代智能移動和小內(nèi)存占用的設(shè)備提供了一個健壯的實時操作系統(tǒng)。Windows CE .NET具備完整的操作系統(tǒng)特性集包和端對端開發(fā)環(huán)境,它包括了創(chuàng)建一個基于Windows CE的定制設(shè)備所需的一切,例如:強大的聯(lián)網(wǎng)能力、強勁的實時性和小內(nèi)存體積占用以及豐富的多媒體和Web瀏覽功能。

?WINCE本身是一個完全在內(nèi)存中運行的系統(tǒng)。每次啟動都需要把NK.BIN拷貝到內(nèi)存中相對應(yīng)的地址。關(guān)機之后內(nèi)存中的數(shù)據(jù)將都“消失”。這樣的系統(tǒng)就不需要了系統(tǒng)維護,但是如何“永久”的保存設(shè)置就成了問題。通過查找資料找到了一個微軟提供的解決辦法。具體實現(xiàn)方法如下:

第一步:在PB的Catalog里面將Hive-based Registry加入到我們的Platform之中。

?

第二步:在Platform.reg中修改[HKEY_LOCAL_MACHINE\init\BootVars]下面的設(shè)置為:

"SystemHive"=""

"Start DevMgr"=dword:

在我們系統(tǒng)中是從CF卡中直接啟動,相當(dāng)于Windows系統(tǒng)的C盤,所以具體更改如下:"SYSTEMHIVE"="Documents and Settings\\system.hv"

"PROFILEDIR"="Documents and Settings"

"Start DevMgr"=dword:1

SYSTEMHIVE是system.hv文件保存的路徑。Start DevMgr是選擇是否啟動設(shè)備管理器(Device Manager),啟動設(shè)備管理器的目的是為了啟動一些Hive-based Registry所必須的設(shè)備。(Start DevMgr?is a Boolean value indicating whether or not to start the Device Manager so it can start the drivers necessary to reach the registry hives. A value of 1 causes the Device Manager to start; 0 keeps the Device Manager from starting. The only case in which the Device Manager should not start is if you want to store the hives in the object store, which causes the hives to be lost on a cold boot. Typically, the hives are stored outside RAM, so it is necessary to start the Device Manager.)

第三步:在Platform.reg中修改[HKEY_LOCAL_MACHINE\init\BootVars]下面的"DefaultUser"=""設(shè)置,以確定調(diào)用哪個默認用戶的Hive-based Registry。如果不是多用戶可以不做設(shè)置。

第四步:確定一下Platform.reg和Common.reg當(dāng)中所有的啟動驅(qū)動程序的注冊項是否設(shè)置。你可以在Platform.reg和Common.reg中搜索

; HIVE BOOT SECTION

; END HIVE BOOT SECTION

這樣的字段。有許多項需要設(shè)置,包括IRQ、IO、PCI等,不過一般的如果你沒有修改過,系統(tǒng)默認的就可以了。這些設(shè)置是告訴ROM registry builder需要把什么加入到boot hive中。

?

第五步:啟動必須在第一啟動階段啟動的驅(qū)動程序。我們先看一下下面的關(guān)于第一啟動階段的描述:

?

很顯然的Filesys是必須在第一啟動階段啟動的。在common.reg中找到相關(guān)的文件系統(tǒng)的設(shè)置,添加"Flags"=dword:1000,我們用的fat文件系統(tǒng),具體設(shè)置如圖:

第六步:設(shè)置MountFlags的注冊值為DWORD:2。在Common.reg中的:

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\?\]

設(shè)置: "MountFlags"=dword:2

第七步:確定是否需要注冊表刷新機制。一般情況下在OS掛起或者重啟動等軟起動的時候系統(tǒng)會自動的刷新保存注冊表;但是當(dāng)系統(tǒng)突然掉電的話,注冊表是不會保存的。所以就需要在更改了設(shè)置之后對注冊表進行刷新。一般的解決方案是在用戶進行了設(shè)置之后運行保存設(shè)置程序(調(diào)用RegFlushKey)進行設(shè)置的保存;不要定時的刷新注冊表,這樣會是整個系統(tǒng)變的很慢。

第八步:完全的重新build,make image,重新生成nk.bin。

通過以上的設(shè)置Wince系統(tǒng)中就可以實現(xiàn)設(shè)置的永久保存了。

?

參考文獻:

Microsoft Windows CE .NET 4.2 HELP VERSION 4.0

?

下面分享一下我在WINCE5。0下做好保存設(shè)置的方法(用的ARMSYS2440平臺,很簡單哦,理論的東西就不多說了,上面兩篇文章講得比較清楚了):

第(1)步,在當(dāng)前Platform下加入Hive-based Registry的支持;

第 (2)步,在注冊表platform.reg中查找“; HIVE BOOT SECTION”,有兩處,在第二處(原來是:IF BSP_NONANDFS !的地方),將; HIVE BOOT SECTION 和 ; END HIVE BOOT SECTION之間的內(nèi)容替換成:

[HKEY_LOCAL_MACHINE\init\BootVars]
??? "SystemHive"="system.hv"
??? "Start DevMgr"=dword:1
??? "RegistryFlags"=dword:1
[HKEY_LOCAL_MACHINE\init\BootVars]
?? "DefaultUser"="default"

IF BSP_NONANDFS !
[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\SMFLASH]
??? "DriverPath"="Drivers\\BuiltIn\\SMFLASH"
??? ; LoadFlags 0x01 == load synchronously
??? "LoadFlags"=dword:1
??? "BootPhase"=dword:0

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SMFLASH]
??? "Prefix"="DSK"
??? "Dll"="smflash.dll"
??? "Index"=dword:1
??? "Order"=dword:0
??? "Profile"="SMFLASH"
??? "IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
?? "Flags"= dword:1000??????????? ;;;;;;;;;;

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH]
??? "DefaultFileSystem"="BINFS"
??? "AutoPart"=dword:1
??? "AutoMount"=dword:1
??? "PartitionDriver"="mspart.dll"
??? "Name"="Microsoft Flash Disk"
??? "Folder"="ResidentFlash"
??? "BootPhase"=dword:0
?? "MountFlags"=dword:2
??? "Flags"= dword:1000??????????? ;;;;;;;;;;

; Keep FATFS from trying to shadow \Windows
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH\FATFS]
??? "Flags"=dword:14
??? "FormatTfat"=dword:1
??? "CheckForFormat"=dword:1
?????
[HKEY_LOCAL_MACHINE\System\StorageManager\FATFS]
??? "Flags"=dword:00000014?? ;FATFS_TFAT_ALWAYS|FATFS_FORCE_TFAT
???? "MountFlags"=dword:0

ENDIF ; BSP_NONANDFS
; END HIVE BOOT SECTION

第(3)步,最后一步,重新Sysgen(要選擇clean before building),最后build BSP,makeimg。

總結(jié)

以上是生活随笔為你收集整理的How to Use Hive-based Registry IN WINCE.NET的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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