File System Filters (Windows Embedded CE 6.0)
A file system filter is a DLL that exports file system entry points. These entry points map to the standard file system functions, such as CreateFile and CreateDirectory. Because file system filters intercept file system calls, you can use this mechanism to encrypt, compress, or scan any file system for viruses, provided the file system is loaded by FSD Manager. Multiple filters can exist on any file system loaded by FSD Manager, performing file manipulation before the file system sees the call.
File system filters are lightweight file system drivers (FSDs) that expose the hooking functions FSD_HookVolume and FSD_UnhookVolume, instead of disk-mounting functions such as FSD_MountDisk and FSD_UnmountDisk.
For more information on functions used by an FSD, see File System Driver Creation.
FSD Manager loads FSDs and file system filters.
File System Filter Registry Key Paths
File system filters can be listed in the registry at several different levels.
Filters are applied to all occurrences of the file system loaded under a named level, unless the application is specifically overridden at a lower level.
Filters loaded at this level are applied to all file systems of any kind.
Filters loaded at this level apply to all occurrences of a specified file system.
Filters loaded at this level are applied to all autoloaded file systems of a specified type.
- HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MyProfileName\ MyFileSystem \Filters
Filters loaded at this level apply to all occurrences of a specified file system on storage devices that have a specified profile.
File System Filter Registry Values
To set up a file system filter using any valid registry keys, append your filter name, DLL value, and Order value to the Filters key as shown in the following example:
[HKEY_LOCAL_MACHINE\System\StorageManager\...\Filters\FilterName] "dll"="filter.dll" "Order"=dword:x
The order of the filters on the stack is from high to low, where the filter with the highest order value is loaded first, and the filter with the lowest order value is loaded last. If the order is not specified, the Order value is set to 0xFFFFFFFF. If more than one filter exists with an unspecified order value, the ordering among those filters is undefined.