Storage Manager Registry Settings (Windows CE 5.0)
The Storage Manager uses the registry to retrieve appropriate information about the store, including information about individual storage profiles. Profiles are reported by block drivers.
The Storage Manager modules are loaded through the HKEY_LOCAL_MACHINE\System\StorageManager registry key. The following table describes critical subkeys for Storage Manager.
|"Dll"||Enables the Storage Manager.|
|"PNPUnloadDelay"||Specifies the time delay in milliseconds between unmounting and detaching a device.
Used during suspend/resume cycles where a block driver might unload and reload on resume.
Default is 5000 microseconds.
|"PnPWaitIoDelay"||Specifies the amount of time waited before re-trying an I/O operation on an unavailable device.
This subkey is not present in the default registry, but may be added by the OEM. If this value is not specified, it is assumed to be the same as PNPUnloadDelay.
|"PNPThreadPrio256"||Specifies the thread priority for the FSDMGR PNP thread, which detects storage events and mounts or dismounts devices in response to those events.|
The value set in "PnPUnloadDelay" becomes the basis for a second important timing value, "PnPWaitIoDelay".
While PnPUnloadDelay determines the wait time between detaching and unmounting, PnPWaitIoDelay determines the amount of time waited before re-trying an I/O operation on an unavailable device. For example, consider a situation in which the system resumes while the SD memory card is disabled, and then a thread calls ReadFile on the unavailable SD card. In this case, the thread would sleeps for PnpWaitIoDelay milliseconds before retrying.
By default, PnPWaitIoDelay is three times as long as the value specified in PnPUnloadDelay. This default value can be overridden by adding the PnPWaitIoDelay registry subkey, and setting the value to the desired time.
Storage Manager Profiles
A Block Driver reports that it has a particular profile in the STORAGEDEVICEINFO structure. The szProfile string retrieves this profile. The structure is also available in the STOREINFO (Storage Manager) returned from the GetStoreInfo API. The information is stored in the HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\<your profile name> registry key.
In addition, this key contains definitions for the partition table that profiles use. The partition table stores the relationships between partition identifiers and file system drivers.
The following table shows flags that you can place in the HKEY_LOCAL_MACHINE\System\StorageManager\Profiles registry key.
|"AutoFormat"||Formats a store automatically when the store is unformatted. Set to 1 to enable. Set to 0 to disable.|
|"AutoMount"||Automatically mounts each detected partition if the FSD Manager is available.|
|"AutoPart"||Automatically partitions the store with largest creatable partition.|
|"DefaultFileSystem"||The default file system to load. This value is only used if the ID value for the partition is not present in the partition ID table for a profile.|
|"Dll"||Module to load for the file system.|
|"Folder"||This is the base name to use when a volume is mounted on this store. If a name is in use then a number is concatenated to the base name and increased each time.|
|"FriendlyName"||This is a descriptive name for the file system.|
|"MountFlags"||Flags on how the partition is mounted. This value has been deprecated in Windows CE 5.0. It is recommended that you use the registry keys listed below to specify FSD boot properties.
For more information, see Mount Settings.
|"Name"||This is the friendly name of the store and is available in the szStoreName member of the STOREINFO (Storage Manager) structure.|
|"Paging"||Set to 1 (default) to enable paging.
Set to 0 to disable paging.
|"PartitionDriver"||The default partition driver to load. If this string is empty, load the built-in NULL partition driver. There is no partitioning.|
The following registry key examples are the default for all profiles; a named profile overrides these values:
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles] "AutoMount"=dword:1 "AutoPart"=dword:0 "AutoFormat"=dword:0 "MountFlags"=dword:0 "DefaultFileSystem"="FATFS" "PartitionDriver"="mspart.dll" "Folder"="Mounted Volume" [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\PCMCIA] "Name"="PCMCIA/Compact Flash Device" "Folder"="Storage Card" "AutoMount"=dword:1 "DefaultFileSystem"="fatfsd.dll" "PartitionDriver"="mspart.dll" [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\HDProfile] "Name"="IDE Hard Disk Drive" "Folder"="Hard Disk" "AutoMount"=dword:1 "DefaultFileSystem"="fatfsd.dll" "PartitionDriver"="mspart.dll" [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\HDProfile\FATFS] "EnableCacheWarm"=dword:0 [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SDMMC] "Name"="SD MMC device" "Folder"="SD Card"
The following key designates an NTFS partition with PartitionTable entry value "07", and the instruction to not mount any file system
Loading FSD Manager
The following registry key examples tell the file system to load the FSD Manager, the Storage Manager component, fsdmgr,dll, that handles all installable file systems, and the Release File System, relfsd.dll, that supports development:
[HKEY_LOCAL_MACHINE\System\StorageManager] "Dll"="fsdmgr.dll" "PNPUnloadDelay"=dword:1000 [HKEY_LOCAL_MACHINE\Loader] "SystemPath"=multi_sz:"\\Release\\" [HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\Relfsd] "Dll"="relfsd.dll" "Paging"=dword:1
Send Feedback on this topic to the authors