Hacking Windows CE!Windows Embedded Compact 7 文件系统概要

来源:互联网 发布:1光年等于多少米的算法 编辑:程序博客网 时间:2024/05/20 07:17

http://www.cnblogs.com/NorthCan/archive/2011/09/28/2193934.html

Windows Embedded Compact 7(以下简称WEC7)支持多种常用的文件系统,包括三种不同类型的FAT(File Allocation Tabe)文件系统。应用程序可以通过文件IO函数来访问文件,而不用去理会系统底层是如何实现的。

  从微软的文档中可以看到,WEC7支持的文件系统可以分为两大类:

  第一种称作是“由文件系统驱动(FSDs)控制的文件系统”,WEC7包含多种文件系统的驱动程序。除此之外,用户还可以自己创建并注册适合的文件系统,而所有的这些文件系统都可以通过WEC7的Win32文件系统API函数来访问。

  另一种称作是“Registered file systems”,包含RELFSD文件系统、对象存储(RAM)文件系统、ROM文件系统。

  WEC7支持两种类型的文件缓存服务:文件缓存和磁盘缓存。

  文件缓存服务由文件系统缓存管理器提供,文件系统缓存管理器其实就是一个文件系统过滤器(filter),文件缓存只能够用来缓存文件数据。文件系统过滤器其实就是一个DLL,导出一些入口点(钩子)函数。文件系统过滤器会拦截文件系统调用。比如应用程序调用了CreateFile,这时候是进入到filter的CreateFile接口函数,在这个函数中做相应的工作之后,再传回给相应的标准文件系统功能函数。有了这样一个filter,我们还可以在其中做一些压缩,加密,扫描病毒等工作。

  磁盘缓存服务由一个辅助型的链接库(library)来提供,这个链接库由FSD来链接。比如FSD可以用磁盘缓存服务来缓存文件系统元数据(metadata),如目录条目等。

  关于上面提到的filter,如果电脑中安装了WinCE,微软在如下路径有一个sample:\Public\Common\Oak\Drivers\FSD\EncFilt。不过我发现WEC7下貌似没有,而WinCE6在这个路径下有这个示例程序。另一个Sample的位置是:\WINCE700\public\COMMON\oak\drivers\fsd\fsdspy关于这些filter是如何用起来的,在WinCE系统源码中的文件系统驱动管理器(fsdmgr)的源码中可以找到。