随着Windows Embedded CE的发展,对象存储的作用越来越小,而大容量的永久存储设备被越来越多地采用。Windows Embedded CE文件系统是一种灵活的模块化设计,它允许自定义文件系统、筛选器和多种不同的块设备类型。一般来说,Windows Embedded CE基本提供了三种文件系统:基于ROM的文件系统、基于RAM的文件系统、FAT文件系统。
Windows Embedded CE下设备文件系统结构
实际上,文件系统和所有与文件相关的 API 都是通过FileSys.exe进程来管理的。这个模块实现了对象存储和存储管理器,并将所有文件系统统一到一个“\”下面的单个系统中。
FileSys.exe 由ROM文件系统、存储管理器、对象存储3个组件组成。
ROM 文件系统可以防止程序或数据被任意更改。
存储管理器是负责管理系统中的存储设备,以及用于访问它们的文件系统。
对象存储包含 RAM 系统注册表、RAM 文件系统和属性数据库,算是一个内存堆。
FileSys.exe 从ROM文件系统内的默认注册表对注册表进行初始化,以便启动各种应用程序。从HKEY_LOCAL_MACHINE\Driver\BuiltIn项加载驱动程序,然后,内置到存储管理器向设备管理器通知系统注册,以便接收有关块驱动程序加载和卸载的通知。
Windows Embedded CE文件系统体系结构
FileSys,即“File System”单从名字可以看出它是一个文件系统,但它真正的范围要比它的名字广得多,不但包括文件系统,还包括存储对象的管理。
拿现在的CE 6.0举例,其对象存储系统有丰富的存储功能,提供各种文件系统的支持,包括FAT文件系统、RAM文件系统和其他CD等通用磁盘文件系统。
支持第三方定制的文件系统,支持与SQL-CE和SQL Server数据库的链接,有良好的安全特性,支持第三方程序对磁盘进行的加密。
其中,比较重要的是CE 6.0的FAT文件系统。它采用了Extended File Allocation Table File System (ExFAT),解决了大容量文件存储的限制问题。
为什么这么说呢?在WinCE 5.0中,对象存储最大可以达到256MB,单个文件不超过4GB,在CE6.0中存储的限制就解除了。
另外,使用了Win CE 6.0的设备与桌面PC机之间的文件传输更加方便快捷;而且,ExFAT还提供了对以前文件系统的支持。
ExFAT的基本特性如下:
对象存储最大为32GB;
突破单个文件夹存储1000个文件的限制;
提升了存储速度;
突破了单个文件不超过4GB的限制;
提高了CE 6.0设备与未来桌面操作系统的互操作性;
支持OEMs和ISVs定制的针对特殊设备的文件系统。
Windows Embedded CE文件系统体系结构是灵活的和可扩展的。不过,将Windows Embedded CE移植到目标平台上,必须为在平台上已建立的设备提供驱动程序。如键盘、显示器等,对操作系统都有一定的接口。
在Windows Embedded CE中应用程序通过文件系统里的特殊入口访问外围设备。WinCE中的文件系统代码包括那些识别特殊文件名并重定向IO操作到适当的流接口驱动程序的代码。
流接口驱动开发
流接口驱动程序是一般类型的设备驱动程序,它表现为在用户一级的动态链接库DLL,用来实现一组固定的函数称为流接口函数,这些流接口函数使得应用程序可以通过文件系统访问这些驱动程序。
流接口驱动程序的主要任务就是把外设的使用传递给应用程序,这是通过把设备表示为文件系统的一个特殊文件实现的。比如:对于串口1在用户级别的程序里面通常被描述为COM1。
不是所有文件系统驱动程序都使用了物理设备,即使使用,也可能没有使用分区驱动程序。因为文件系统将不需要知道数据是否来自磁盘上的分区、或者直接来自磁盘,所以,FSDMGR会对文件系统驱动程序进行包装,以便为驱动程序的高端或低端提供接口。这就提供了巨大的灵活性呢。