天天看点

lzg_ad:在CF卡上实现EWF功能

第一部分:介绍

使用Microsoft® Windows® XP Embedded我们可以创建一个基于Compact Flash™ (CF卡)引导运行的XPE操作系统。使用CF卡有很多优势,最显著的优势是创建嵌入式装置,这些设备通常较为可靠的,因为他们都没有任何活动部件。使用CF卡的缺点是,它有一定的读写次数限制,当我们反复的对CF进行读写操作的时候,随着时间的推移,CF上的坏块就会越来越多,同时读写速度也会越来越慢,甚至导致最终的系统崩溃或者文件丢失。增强性过滤写入功能(EWF)提供了一种保护CF卡的方式,通过限制直接写入的方式,避免了频繁的读写对CF卡造成的损坏,从而延长了CF卡的使用寿命和读写次数。本文主要描述了如何在CF卡上部署具有EWF功能的XPE操作系统和如何在CF卡上开启EWF功能。

注意,本文提供的方案是假设你的CF卡是不可进行分区操作的,即属于可移动磁盘类型的CF卡。有很多厂商在生产CF卡的时候,就将CF卡标识为本地磁盘或者固定磁盘,这类的CF可以和IDE一样的进行分区和部署具有EWF功能的XPE,不需要使用本文提供的方法进行EWF的部署。当然,如果能够使用已经标识为本地磁盘的CF卡,还是建议使用这样的CF卡,因为它能够提供更好的功能支持和存储持久数据。

第二部分:构建镜像文件

首先,我们需要象平常一样,利用目标设计器来构建你的XPE镜像。一般情况下,如果想使用EWF,该磁盘必须可以进行分区操作,而XPE将在未使用的磁盘空间上创建EWF分区。而大多数CF卡由于是可移动磁盘,所以他不能够进行分区。因此,EWF必须通过手动配置注册表的方式在CF卡上实现。要做到这一点,我们要先建立XPE镜像,然后在FBA完成通过注册表开启EWF。

在你的XPE镜像中,添加一下组件:

1.Enhanced Write Filter 

2.EWF NTLDR 

3.EWF Manager Console application 

4.Registry Editor (optional) 

5.Enhanced Write Filter API (optional)

另外,你必须确认你将EWF缺省状态设置为Disable,同时没有创建EWF分区。要想实现这两点,首先在Enhanced Write Filter组件的Settings中清除 Start EWF Enabled复选框上的勾。如下图所示:

其次,禁用FBA DLL/COM Registration组件设置,该设置在Enhanced Write Filter组件的Resources设置中,如下图所示:

 图2:禁用FBA DLL/COM Registration

如果以上设置没有进行的话,那么EWF将会尝试创建EWF分区并且失败。如果EWF开始便是启用状态,那么针对一下的修改将不会起作用,因为EWF将防止数据被写至最底层的磁盘分区。

第三部分:配置

下一步我们将部署做好的XPE镜像文件到你的目标硬件上。拷贝镜像文件到CF卡并启动进行FBA,等待FBA完成。

<b>注意</b>   如果你使用File Allocation Table (FAT)文件格式格式化你的设备,你需要运行bootprep.exe 来创建引导分区。任何经过手动修改的XPE镜像都需要做这一步操作,因为你将在下一步开启EWF功能。

第四部分:启用EWF

下一步我们将在引导分区上(C盘)开启EWF功能。因为在FBA前,我们已经在Enhanced Write Filter的配置中禁用了EWF功能,所以EWF没有经过目标设计器的配置和FBA的配置过程。这些必须手动的在注册表中进行设置。

首先,验证一下的注册表信息出现在你的目标设备中:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ewf]

"ErrorControl"=dword:00000001

"Group"="System Bus Extender"

"Start"=dword:00000000

"Type"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{71A27CDD-812A-11D0-BEC7-08002BE2092F}]

"UpperFilters"="Ewf"

其次,添加一下信息到你目标设备的注册表中:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ewf\Parameters]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ewf\Parameters\Protected]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ewf\Parameters\Protected\Volume0]

"VolumeID"="{1EA414D1-6760-4625-8CBE-4F9F85A48E15}"

"ArcName"="multi(0)disk(0)rdisk(0)partition(1)"

这些更改也可以通过在注册表编辑器中导入一个注册表文件(.reg)来实现。或者你也可以在其它计算机上离线编辑好这个注册表文件,然后导入到目标机的注册表内。其中最后一个键值"ArcName", 是指的需要保护的目标机磁盘分区的ARC路径,可根据需要进行设置。

最后,重新启动你的目标机,EWF功能将会启动,同时保护目标磁盘的写操作。

第五部分:问题处理

EWF控制程序(EWFMGR.exe)是一个针对被保护磁盘的控制工具,你可以通过这个命令来完成EWF的各项操作。你可以使用以下命令来检查EWF当前的工作状态:

ewfmgr c: (当C盘是你要保护的磁盘分区)

执行该命令后,EWF管理程序将显示以下类似的信息:

Protected Volume Configuration

  Type            RAM

  State           ENABLED

  Volume ID       BB E6 0E BC 00 64 15 00 05 00 00 00 00 00 00 00

  Device Name     "\Device\HarddiskVolume1" [C:]

  Max Levels      1

  Clump Size      512

  Current Level   1

  Memory used for data 2624000 bytes

  Memory used for mapping 4096 bytes

Ewfmgr c: -commitanddisable -live

第六部分:结尾

Enhanced Write Filter(EWF)通常用来保护Flash介质的存储媒体的写操作,这有助于延长Flash存储器的使用寿命。不幸的是,EWF的标准配置不能用于所有Flash媒体。通过设置注册表的方法提供了一种解决方案,用于当标准的EWF配置方式不能正常地工作或不能正常部署的情况,这种方案适合于任何介质类型的媒体。

本文转自雷志刚 51CTO博客,原文链接:http://blog.51cto.com/leizhigang/238250