non-volatile object store and hive based registry design for windows ce 刘由顺 软件架构师...

33

Upload: logan-hall

Post on 03-Jan-2016

267 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司
Page 2: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Non-Volatile Object Store And Hive Based Registry Design For Windows CE

刘由顺软件架构师北京华夏互动文化传播有限公司

Page 3: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

History• RAM Registry

– SYSGEN_FSREGRAM • Most Common Implementation in PDAs• Content Loss on boot• Save And Restore Methods require difficult code

– pReadRegistryFromOEM– pWriteRegistryToOEM

• RAM Object store – SYSGEN_FSRAMROM

• most common denominator for application development• Object Store Volume is always mounted• Object Store is the Root of the file system • Content Loss on cold boot

– Object Store and Executable Memory Tradeoff• FSRAMPERCENT • SetSystemMemoryDivision()• RAM Object store limited to 256 MB

Page 4: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Persistence Benefits• Simplifies Cold Boot System startup

– Data and Configuration is permanent– Install applications once– Reduce Data Backup/Restore Requirement– Eliminate Redundant Data storage Requirement– Reduce Cold Boot Times– No Limit On Object Store Size

Page 5: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Persistence Benefits

• Better Power Management– Reduce/Remove Backup Battery needs– Increase Battery run time – Lower RAM requirements = Lower Power

• Easy to Implement– Largely Transparent to current Apps– Mainly Simple Registry Setup Required

• Lower Cost systems– Flash is cheaper than RAM for Data Store

Page 6: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Boot Phase Definitions

• 0 = Prior to init of locale (wince.nls)• 1 = After locale init (wince.nls) but before

registry is functional • 2 = After registry is functional

Page 7: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

File System Fundamentals• Autoload file systems

– HKLM\System\StorageManager\AutoLoad

– Do not need block drivers

– Don’t require Device.exe

– Loaded by Storage Manager

– Can Start in BootPhase 0 or 1

– Can Load Synchronously or Asynchronously[HKLM\System\StorageManager\Autoload\<your file system>]

“BootPhase” = dword:0

“LoadFlags” = dword:0 ;Async (default)

;Sync = 1

Page 8: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

File System Fundamentals• Block Driver Based File Systems

– Loaded By Device.exe– IClass indicates its managed by storage manager

{A4E7EDDA-E575-4252-9D6B-4195D48BB865}– Specifies partition and File system drivers– Must Start in Bootphase 1

HKLM\Drivers\Builtin\<your block device>

“BootPhase” = dword:1

Page 9: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Hive Fundamentals• Hives are registry files stored on persistent

file systems– Boot Hive

• Changes made during boot are copied to system hive

– Default Hive / System Hive• System Data (HKLM, HKCR, HKU)

– User Hive• User Data (HKCU)• Allows settings for different users at logon

• Only Deltas are stored

Page 10: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Hive Fundamentals• The kernel starts Filesys.exe• Filesys loads the Boot Hive from the ROM Image• Filesys may start Device.exe to gain access to sys

tem hive– Device.exe starts block drivers based on the boot registry

• The boot file system is initialized based on registry keys

• Filesys loads and mounts system registry• The Kernel initializes using the system registry• The Kernel signals Filesys• Filesys.exe starts applications (Launch Keys)

– Device.exe is loaded if not already loaded – Filesys.exe signals BootPhase2 event– Device.exe then re-enumerates, starting drivers

Page 11: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Hive Fundamentals[HKLM\init\BootVars]

"SystemHive"="<system hive path>” "Start DevMgr"=dword:<your value>

; 0 = don’t start ; 1 = Start

“Default User”=“<username>”“ProfileDir”= <path>“Flags” = dword:3

;Bit 0 = start storage manager ;Bit 1 = start device manager

“RegistryFlags”=dword:<your value>;1 = enables aggressive flushing;0 = default behavior

Page 12: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Hive Implementation• Select Catalog Components

– Hive Based Registry support • (SYSGEN_FSREGHIVE)

– Storage Manager Components• SYSGEN_STOREMGR

• FAT (SYSGEN_FATFS) ?

• TFAT (SYSGEN_TFAT) ?

• Partition Driver (SYSGEN_MSPART) ?

• Components required depends on boot device

– See Examples

Mike Hall
Which Samples - where ?
Page 13: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Hive Implementation

• Define Registry Hive Boot Sections– Define the drivers and other system components required

to start the system and access the boot media. – Wrap all boot hive registry entries in the following

comments;Hive Boot Section

<registry settings>

;End Hive Boot Section

– Common.reg has default definitions

Page 14: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Hive Implementation • Prevent device.exe from loading drivers twice

[HKLM\Builtin\drivers\...]“Flags”=dword:1000

• Analyze the File system components required to load the device used to store the hives

• Does it need partitioning or format?• Beware of drivers that use IsAPIReady()• Enable Additional Debug Zones

[HKCU\Pegasus\Zones] "FileSys" = dword:20

Page 15: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Hive Implementation • Indicate System Registry Location

[HKLM\System\StorageManager\Profiles\<ProfileName>\<FileSystemName>]

"MountFlags"=dword:2or

“MountAsBootable”=dword:1

Page 16: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Hive Implementation• Implement Registry Flushing

– Suspend/Resume/PowerDown Flushing is automatic if power aware (more later)

– Do one or more of the following• Enable Aggressive Flushing

[HKLM\init\BootVars]

“RegistryFlags"=dword:1• RegFlushKey() during power down

• Enable Lazy Flushing Environment Variable at build time

– PRJ_ENABLE_REGFLUSH_THREAD

Page 17: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Persistent Object Store

• Select the Catalog Components– Select ROM-Only File System from Catalog

(SYSGEN_FSROMONLY)– Select Storage Manager Components from Catalog

• SYSGEN_STOREMGR

• FAT (SYSGEN_FATFS) ?

• FAT (SYSGEN_TFAT) ?

• Partition Driver (SYSGEN_MSPART) ?

Page 18: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Persistent Object Store

• Mount Root File System[HKLM\System\StorageManager\Profiles\<Your File System>]

“MountAsRoot” = dword:1

Page 19: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Persistent Object Store

• Update FSRAMPERCENT in Config.bib– Defaults to 0x80808080 if not set– Set FSRAMPERCENT to >= 32KB – Still need some RAM for Object Store Operations

• Recycle Bin

• Copy Operations

• Manage Stack and Memory Heap

• Compress and Expand Files

– *pOEMCalcFSPages()

Page 20: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Exploring A PersistentSystem

Page 21: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

iPSM Example

; This registry setting indicates the PSM contains the registry and sets PSM ; to load in the first boot phase with the boot registry.

[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\PSM] "Dll"="PSMFSD.dll" "Paging"=dword:1 "LoadFlags"=dword:1 "MountFlags"=dword:2 "Flags"=dword:1000 "MountAsRoot"=dword:1 ;makes psm the root of the file system "MountAsBootable"=dword:1 ;specifies the drive contains the system hive. "BootPhase"=dword:1 ;NLS support needed

; The following key loads the PSMLock dll to support power management issue with PSM[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PSMLock] "Prefix"="PSL" "Dll"="PSMLock.Dll" "IClass"=multi_sz:"{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}"

Page 22: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

iPSM Example; This registry key specifies the name of the PSM folder.[HKEY_LOCAL_MACHINE\Drivers\Builtin\FlshDrv] "FolderName"="Flash File Store“

[HKEY_LOCAL_MACHINE\System\StorageManager] "Dll"="fsdmgr.dll“; This flag tells the device manager to load fsdmgr in the first boot phase; with the boot registry, and not to load it a second time in the second ; boot phase with the system registry "Flags"=dword:1000

[HKEY_LOCAL_MACHINE\System\Platform] "RegPath" = "\\Flash File Store"

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\PSM] "MountAsRoot"=dword:1 ;makes PSM the root of the file system "MountAsBootable"=dword:1 ;specifies PSM contains the system hive. "BootPhase"=dword:1 ; NLS support is required

Page 23: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

DOC Example

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\TrueFFS][HKEY_LOCAL_MACHINE\Drivers\BuiltIn\TrueFFS] "Index"=dword:1"Index"=dword:1 "Dll"="TrueFFS.dll""Dll"="TrueFFS.dll" "Prefix"="DSK""Prefix"="DSK" "Order"=dword:1"Order"=dword:1 "Ioctl"=dword:4"Ioctl"=dword:4 "AutoFormat"=dword:1 ; test for format to boot"AutoFormat"=dword:1 ; test for format to boot "DocAccessType"=dword:10"DocAccessType"=dword:10 "WindowBase"=dword:0c000000"WindowBase"=dword:0c000000 "IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}“"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}“

"Flags"=dword:1000"Flags"=dword:1000 ;avoid loading the driver twice ;avoid loading the driver twice "BootPhase"=dword:1 ;NLS support required"BootPhase"=dword:1 ;NLS support required

Page 24: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

DOC Example[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\TRUEFFS_DOC] "Name"="DiskOnChip M-Systems" "Folder"="DiskOnChip" "AutoFormat"=dword:1 ;auto format if needed "AutoPart"=dword:1 ;auto partition if needed

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\TRUEFFS_DOC] "DefaultFileSystem"="FATFS" "AutoMount"=dword:1 ;mount any partition automatically "MountAsRoot"=dword:1 ;makes trueffs the root of the file system "MountAsBootable"=dword:1 ;specifies that Trueffs contains the system hive. "BootPhase"=dword:1 ;NLS required

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\TRUEFFS_DOC\FATFS] “MountAsBootable"=dword:1 ;FATFS is mounted as bootable "MountAsRoot"=dword:1 ;FATFS contains the system hive

Page 25: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Debug Example

Page 26: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Power Management Considerations

• Use SetSystemPowerState() – allow power manager to properly flush file system on

suspend/resume cycles– Implement Graceful Shutdowns– Software enabled cold and warm boots– IClass {8DD679CE-8AB4-43c8-A14A-EA4963FAA715} indicates

Power Managed Block Device

• Provide methods to protect against file system corruption– TFAT– Other software methods– Hardware methods– System recovery tools (ScanVolume())

Page 27: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Performance Considerations• Performance will be slower than RAM based Object Store

• Consider the System Data Use

• NOR Flash Memory– Fast Read

– Slower Write than NAND

• NAND Flash Memory– Slower Read than Nor

– Faster Write than Nor

• RamDrive can be used to boost application performance

• Implement Proper File System Caching– HKLM\SYSTEM\StorageManager\FATFS

• “EnableCache” = dword:1 • “CacheSize” = dword:?• FATFS_VERIFY_WRITES Flag ?• FATSF_WRITETHROUGH Flag ?

• Implement Proper System Data Caching

• Tune File System Drivers for Performance

Page 28: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Application Considerations• Rogue Applications can prevent boot• Implement Clean/Safe Boot

– Format Media• IOCTL_HAL_QUERY_FORMAT_PARTITON

– Restore Default (ROM) Hive• IOCTL_HAL_GET_HIVE_CLEAN_FLAG

– Old Registry is deleted– New Registry is created– Reverts system to Factory Defaults

– Provide tools for diagnosis of failure• Read Media from Bootstrap

– Diagnose Registry– Diagnose File System

Page 29: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Application Considerations• Registry Save and Restore functions exist

RegSaveKey(HKEY_LOCAL_MACHINE,…)RegReplaceKey(HKEY_LOCAL_MACHINE,…)

RegSaveKey(HKEY_CURRENT_USER,…)SetCurrentUser(NULL,…)

CopyFile(CurrentUser,….)

• Use Persisted Keys for determining when to backup registry

[HKEY_LOCAL_MACHINE]"RegPersisted"=dword:1

[HKEY_CURRENT_USER]“RegPersisted”=dword:1

Page 30: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Questions?

Page 31: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

Tools & Resources

msdn.microsoft.com/msdn.microsoft.com/ embeddedembedded

microsoft.public.microsoft.public. windowsxp.embeddedwindowsxp.embedded windowsce.platbuilderwindowsce.platbuilder windowsce.embedded.vcwindowsce.embedded.vc

blogs.msdn.com/blogs.msdn.com/ mikehallmikehall

Windows CE 5.0 Eval KitWindows CE 5.0 Eval KitWindows XP Embedded Eval KitWindows XP Embedded Eval Kit

msdn.microsoft.com/msdn.microsoft.com/ mobilitymobility

microsoft.public.microsoft.public. pocketpc.developer pocketpc.developer smartphone.developer smartphone.developer dotnet.framework.compactframeworkdotnet.framework.compactframework

blogs.msdn.com/blogs.msdn.com/ windowsmobilewindowsmobile vsdteamvsdteam netcfteamnetcfteam

Windows Mobile 5.0 Eval KitWindows Mobile 5.0 Eval Kit

WebsitesWebsites

NewsgroupsNewsgroups

BlogsBlogs

ToolsTools

BuildBuild DevelopDevelop

Page 32: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司

请在课程结束后填写课程培训反馈表,参加抽奖。

请填写资料袋内的蓝色大会满意度反馈表,到大会接待台领取《Windows Mobile手机应用开发》工具书。

您还可以:参加 Windows Mobile 动手实验室;参观微软及合作伙伴展区;体验基于 Windows Mobile 平台开发的最新硬件产品及解决方案。

大会注意事项

Page 33: Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司