1 / 33

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

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

argyle
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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 system 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. Hive Implementation • Indicate System Registry Location [HKLM\System\StorageManager\Profiles\<ProfileName>\<FileSystemName>] "MountFlags"=dword:2 or “MountAsBootable”=dword:1

  15. 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

  16. 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) ?

  17. Persistent Object Store • Mount Root File System [HKLM\System\StorageManager\Profiles\<Your File System>] “MountAsRoot” = dword:1

  18. 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()

  19. Exploring A PersistentSystem

  20. 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}"

  21. 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

  22. DOC Example [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\TrueFFS] "Index"=dword:1 "Dll"="TrueFFS.dll" "Prefix"="DSK" "Order"=dword:1 "Ioctl"=dword:4 "AutoFormat"=dword:1 ; test for format to boot "DocAccessType"=dword:10 "WindowBase"=dword:0c000000 "IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}“ "Flags"=dword:1000 ;avoid loading the driver twice "BootPhase"=dword:1 ;NLS support required

  23. 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

  24. Debug Example

  25. 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())

  26. 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

  27. 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

  28. 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

  29. Questions?

  30. Tools & Resources Build Develop Websites msdn.microsoft.com/embedded msdn.microsoft.com/mobility Newsgroups microsoft.public.pocketpc.developer smartphone.developer dotnet.framework.compactframework microsoft.public.windowsxp.embedded windowsce.platbuilder windowsce.embedded.vc Blogs blogs.msdn.com/mikehall blogs.msdn.com/windowsmobilevsdteamnetcfteam Tools Windows CE 5.0 Eval KitWindows XP Embedded Eval Kit Windows Mobile 5.0 Eval Kit

  31. 大会注意事项 请在课程结束后填写课程培训反馈表,参加抽奖。 请填写资料袋内的蓝色大会满意度反馈表,到大会接待台领取 《Windows Mobile手机应用开发》工具书。 您还可以: 参加Windows Mobile动手实验室; 参观微软及合作伙伴展区; 体验基于 Windows Mobile平台开发的最新硬件产品及解决方案。

More Related