第一部分:介绍
使用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