EW F 原理详解 EWF 全称 Enhanced Write Filter (增强型写入过滤) 所有热衷于XPE开发的人都知道,基于Compact Flash Cards(CF卡)的EWF开发是一个热点问题。我整理了一些关于这方面的相关问题,让我们把这个问题划分为两大方面:如何设置 EWF和如何使 EWF工作在 CF卡上。 首先我们来了解一下,什么是Enhanced Write Filter? 如果你非常熟悉 Windows NT Embedded 4.0下的Write Filter功能,那么你需要完全放掉对这个功能的理解,虽然从功能和命名上看 Enhanced Write Filter 和 Write Filter 很相似,但是如果你用相同的思维方式理解Enhanced Write Filter和 Windows NT Embedded 4.0下的Write Filter功能,你会感到很困惑。 要正确地理解EWF,我需要先介绍一下覆盖层的概念。一个覆盖层理论上是置于被保护卷的上方,所有对保护卷的读写操作都要先经过覆盖层。开启过滤功能后,被保护卷将不能被写入,但是可以读取信息。如果目标信息不在覆盖层上,那么覆盖层可以通过读保护卷的操作,但是将会过滤写入的操作,所有的针对保护卷的写入操作都将记录在覆盖层上。写入数据流程如下图所示: 读取数据流程如下图所示: 因此,覆盖层究竟在哪里呢?在Windows NT Embedded 4.0中,Write Filter隐藏在所有的可用内存中,如果它需要,它会消耗掉很多的内存空间。当内存空间耗尽,出现内存溢出的情况,系统将停止运行(俗称死机)。而 EWF则允许它的覆盖层开辟在内存或者磁盘的第二个分区(扩展分区或者自由分区)。这个区别在小的磁盘空间上有明显的作用,覆盖层可以存在于内存上。 基于 RAM(内存模式)创建的EWF覆盖层是临时的,它的创建是在每次机器启动的时候,同样,在每次机器重新启动的时候它也会自动消亡,覆盖层上操作也会全部丢失。基于 RAM的覆盖层的访问速度是非常快的,这取决于内存和硬盘的读写速度原因。然而,基于 RAM的覆盖层的尺寸是受限于内存中的未使用页面的尺寸,这点区别于基于 DISK模式。当对保护卷的读写操作非常频繁的时候,内存也会因为覆盖层的不断膨胀而消耗殆尽。 基于 DISK(磁盘模式)创建的EWF覆盖层位于物理磁盘的空间上,所以静态信息可以被保存在覆盖层上,即使断电也不会丢失。写入的信息可以从覆盖层提交到被保护卷。DISK模式建立的覆盖层读写速度要比 RAM模式建立的覆盖层慢。覆盖层尺寸的设置应该等于被保护分区尺寸的大小,该设置在构建 XPE工程的过程中完成(目标...