so927 (so_zhou) 等 级: 结帖率:99.13%
楼主发表于:2009-06-23 13:00:16
我的wince6编译环境中,我发现在platform.reg和common.reg中都存在; HIVE BOOT SECTION标签,并且都有相同的内容,如下
HTML code
[HKEY_LOCAL_MACHINE/Init/BootVars]
"SystemHive"="//NandFlash//system.hv"
"ProfileDir"="//NandFlash//user.hv"
我按照网上的说法将platform.reg中的修改之后,任然没有任何改变,后来将common.reg中的也更改为相同设置,系统启动之后发现,system.hv和user.hv并没有像期望的那样保存到了NANDFLASH,而是自己在系统根目录下创建了一个NANDFLASH目录,并将这两个.hv文件保存在当中,而剩余的flash内存则被命名为了NANDFLASH2,更改注册表设置之后,并不能保存。
一头雾水!
希望实现了wince6的朋友提供一点帮助。感激不尽。
我的QQ:877970105
E_Mail:so_zhou@qq.com
#1楼 得分:0 回复于:2009-06-23 13:27:21
CE6.0下的HIVE,应该与CE5.0下的实现没有什么区别的。按CE5.0下的方法试试吧!
没有做过,提点建议,呵呵~
#2楼 得分:2 回复于:2009-06-23 14:02:05
nandflash 的驱动的"order"是不是 0,还有"BootPhase"=dword:0。从你的现象来看:NANDFLASH分区是后加载的。而不是在hive之前加载的。[HKEY_LOCAL_MACHINE/init/BootVars]
"Start DevMgr"=dword:1
"RegistryFlags"=dword:0
"Flags"=dword:F
"SystemHive"="//NandFlash//system.hv"
"ProfileDir"="//NandFlash//user.hv"
#3楼 得分:5 回复于:2009-06-23 14:14:43
Please refer "Implementing the Hive-Based Registry" in the web
http://msdn.microsoft.com/en-us/library/aa914710.aspx
Paul, Chao @ Techware
#4楼 得分:3 回复于:2009-06-23 14:18:33
引用 3 楼 paul_chao 的回复:
Please refer "Implementing the Hive-Based Registry" in the web
http://msdn.microsoft.com/en-us/library/aa914710.aspx
Paul, Chao @ Techware
我正好要搞,收藏了!
#5楼 得分:0 回复于:2009-06-24 12:38:15
一下是我从platform.reg中提取出来的,在“; HIVE BOOT SECTION”标签中的内容
C/C++ code
;
-------------------------------------------------------------------------
; HIVE BOOT SECTION
[HKEY_LOCAL_MACHINE/Drivers/Resources/IRQ]
"
Identifier
"
=
dword:
1
"
Minimum
"
=
dword:
1
"
Space
"
=
dword:
20
"
Ranges
"
=
"
1-0x20
"
[HKEY_LOCAL_MACHINE/Drivers/Resources/IO]
"
Identifier
"
=
dword:
2
"
Minimum
"
=
dword:
0
"
Space
"
=
dword:
10000
"
Ranges
"
=
"
0-0xFFFF
"
IF IMGHIVEREG
[HKEY_LOCAL_MACHINE/Init/BootVars]
"
SystemHive
"
=
"
//NandFlash//system.hv
"
"
ProfileDir
"
=
"
//NandFlash//user.hv
"
"
Start DevMgr
"
=
dword:
1
"
DefaultUser
"
=
"
default
"
"
Flags
"
=
dword:F
"
RegistryFlags
"
=
dword:
0
ENDIF IMGHIVEREG
; END HIVE BOOT SECTION
;
-------------------------------------------------------------------------
;
-------------------------------------------------------------------------
; @CESYSGEN IF CE_MODULES_DEVICE
;
--------------
NAND Flash Block Device Driver
----------------------------------
; @CESYSGEN IF CE_MODULES_FSDMGR
; HIVE BOOT SECTION
IF BSP_NONANDFS
!
[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/NANDFLASH]
"
Prefix
"
=
"
DSK
"
"
Dll
"
=
"
nandflash.dll
"
"
Index
"
=
dword:
1
"
Order
"
=
dword:
0
"
Profile
"
=
"
NANDFLASH
"
"
IClass
"
=
"
{A4E7EDDA-E575-4252-9D6B-4195D48BB865}
"
IF IMGHIVEREG
"
Flags
"
=
dword:
1000
ENDIF IMGHIVEREG
[HKEY_LOCAL_MACHINE/System/StorageManager/AutoLoad/NANDFLASH]
"
DriverPath
"
=
"
Drivers//BuiltIn//NANDFLASH
"
"
LoadFlags
"
=
dword:
1
; load synchronously
"
BootPhase
"
=
dword:
0
"
Order
"
=
dword:
0
IF IMGHIVEREG
"
MountAsBootable
"
=
dword:
1
;
for
Hive
-
based registry
ENDIF IMGHIVEREG
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/NANDFLASH]
"
DefaultFileSystem
"
=
"
BINFS
"
"
PartitionDriver
"
=
"
mspart.dll
"
"
Name
"
=
"
Microsoft Flash Disk
"
"
Folder
"
=
"
NANDFlash
"
"
AutoMount
"
=
dword:
1
"
AutoPart
"
=
dword:
1
"
AutoFormat
"
=
dword:
1
"
MountFlags
"
=
dword:
2
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/NANDFLASH/BINFS]
"
MountHidden
"
=
dword:
1
"
MountAsROM
"
=
dword:
1
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/NANDFLASH/FATFS]
"
MountFlags
"
=
dword:
2
;unmask
this
line when enable HIVE
"
EnableCache
"
=
dword:
1
"
CacheSize
"
=
dword:
1000
"
MountBootable
"
=
dword:
1
"
Flags
"
=
dword:
00000024
"
CheckForFormat
"
=
dword:
1
[HKEY_LOCAL_MACHINE/System/StorageManager/AutoLoad/NANDFLASH/Filters/CacheFilt]
"
Dll
"
=
"
cachefilt.dll
"
"
LockIOBuffers
"
=
dword:
1
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/NANDFLASH/FATFS/Filters/CacheFilt]
"
Dll
"
=
"
cachefilt.dll
"
"
LockIOBuffers
"
=
dword:
1
ENDIF BSP_NONANDFS
!
; END HIVE BOOT SECTION
; @CESYSGEN ENDIF CE_MODULES_FSDMGR
#6楼 得分:10 回复于:2009-06-24 20:29:36
在批处理文件XXX.bat中按照以下:
set IMGHIVEREG=1
if /i "%IMGHIVEREG%"=="1" set PRJ_ENABLE_FSREGHIVE=1
if /i "%IMGHIVEREG%"=="1" set PRJ_ENABLE_REGFLUSH_THREAD=1
在Platform.reg中按照以下:
IF IMGHIVEREG
[HKEY_LOCAL_MACHINE/Init/BootVars]
"Flags"=dword:3
"SYSTEMHIVE"="Documents and Settings//system.hv" ;system.hv will save to : /HDD/Documents and Settings/system.hv
;"PROFILEDIR"="Documents and Settings" ;user.hv will save to : /HDD/Documents and Settings/default/user.hv
"Start DevMgr"=dword:1 ;auto startup device.exe
"DefaultUser"="default"
"RegistryFlags"=dword:1
ENDIF IMGHIVEREG
其中"RegistryFlags"=dword:1很重要,只有为1才会自动保存新的修改。
#7楼 得分:0 回复于:2009-06-24 22:52:08
#8楼 得分:0 回复于:2009-06-24 23:25:10
#9楼 得分:0 回复于:2009-06-24 23:36:32
感谢LH806732提供的帮助,我太粗心了,居然把那个1给删除了,
http://topic.csdn.net/u/20090623/13/331a8386-ffde-4f66-9618-9fc455578b21.html