Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


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

1

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

3 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

4 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

5 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

6 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

7 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\ ] “BootPhase” = dword:0 “LoadFlags” = dword:0 ;Async (default) ;Sync = 1

8 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\ “BootPhase” = dword:1

9 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

10 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

11 Hive Fundamentals [HKLM\init\BootVars] "SystemHive"=" ” "Start DevMgr"=dword: ; 0 = don’t start ; 1 = Start “Default User”=“ ” “ProfileDir”= “Flags” = dword:3 ;Bit 0 = start storage manager ;Bit 1 = start device manager “RegistryFlags”=dword: ;1 = enables aggressive flushing ;0 = default behavior

12 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

13 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 ;End Hive Boot Section –Common.reg has default definitions

14 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

15 Hive Implementation Indicate System Registry Location [HKLM\System\StorageManager\Profiles\ \ ] "MountFlags"=dword:2 or “MountAsBootable”=dword:1

16 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

17 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) ?

18 Persistent Object Store Mount Root File System [HKLM\System\StorageManager\Profiles\ ] “MountAsRoot” = dword:1

19 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()

20 Exploring A Persistent System

21 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}"

22 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

23 DOC Example [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 ;avoid loading the driver twice "Flags"=dword:1000 ;avoid loading the driver twice "BootPhase"=dword:1 ;NLS support required "BootPhase"=dword:1 ;NLS support required

24 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

25 Debug Example

26 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())

27 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

28 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

29 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

30 Questions?

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

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

33


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

Similar presentations


Ads by Google