作者:新新世界

转自:http://blog.sina.com.cn/s/blog_5165652c0100at9l.html

第一部分:介绍

使用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卡,因为它能够提供更好的功能支持和存储持久数据。

在阅读本文之前,建议先了解一下关于EWF的运行原理和工作模式,可以参看文章:lzg_ad:EWF原理详解。本文提供的EWF部署方案是将EWF设置存放在注册表中,这样就不需要有特定的EWF分区。虽然该方案解决了可移动磁盘类型的CF卡不能设置EWF分区的问题,但是他也限制了EWF的很多功能,第一是只能有一个被保护卷,如果你需要保护多个分区,那么你需要使用可分区的CF卡;另一个是禁止(-disable)命令不能使用,这是因为EWF设置只能够存储在注册表中,同时注册表被EWF写保护了,因此命令操作会失效。但是,你可以使用-commitanddisable来完成相关的设置操作,因为通过这个命令首先会把对目标分区所做的操作提交到真实的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 WriteFilter组件的Settings中清除 Start EWFEnabled复选框上的勾。如下图所示:

图1:禁用EWF

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

图2:禁用FBA DLL/COMRegistration

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

第三部分:配置

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

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

第四部分:启用EWF

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

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

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ewf]

"ErrorControl"=dword:00000001

"Group"="System BusExtender"

"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}"

"Type"=dword:00000001

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

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

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

第五部分:问题处理

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

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

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

ProtectedVolume Configuration

Type           RAM

State          ENABLED

VolumeID      BB E6 0E BC 00 64 15 00 05 00 00 00 00 00 00 00

DeviceName    "\Device\HarddiskVolume1" [C:]

MaxLevels     1

ClumpSize     512

CurrentLevel   1

Memory used for data2624000 bytes

Memory used formapping 4096 bytes

如果你试图用EWF管理程序去检查一个没有保护的分区状态时,你将会得到一个错误。这个错误信息将会指出无法找到指定的保护卷。所有更改当前EWF状态的命令都将在重新启动后生效。如需更多资讯,请参阅WindowsXP Embeddeddocumentation。但必须注意的是,利用注册表来配置EWF,禁用EWF的操作只能通过执行commitanddisable命令来完成。

Ewfmgr c:-commitanddisable -live

第六部分:结尾

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

在CF卡上实现EWF功能相关推荐

  1. 在CF卡上实现TrueFFS

    CF卡是一种基于Flash技术的容量大.携带方便的存储介质,已在嵌入式系统等领域得到广泛的应用:但是,有限的擦写次数极大地限制了CF卡的使用寿命.TrueFFS通过一系列算法,能够延长CF卡的使用寿命 ...

  2. 在CF卡上建立文件系统和安装引导加载程序

    CF卡在嵌入式工控领域越来越多的被应用,如何在CF卡上构建嵌入式linux是开发中一个基础但非常重要的过程! 本文介绍在CF卡上建立用于PC104板卡上的根文件系统,着重介绍了针对CF卡的操作,至于具 ...

  3. [原创] 利用busybox, extlinux 在工控机CompactFlash(CF卡)上构建Linux系统(上)

    上篇:CF卡分区, extlinux的安装 中篇:构建根文件系统 下篇:2.6内核剪裁及Busybox编译配置及其分析 硬件平台:研华3355 软件:busybox-1.13.3, extlinux ...

  4. [原创] 利用busybox, extlinux 在工控机CompactFlash(CF卡)上构建Linux系统(中)

    上篇:CF卡分区, extlinux的安装 中篇:构建根文件系统 下篇:2.6内核剪裁及Busybox编译配置及其分析 一个基本的文件系统应该包括: busybox (提供 shell 命令集) 设备 ...

  5. 在CF卡上安装Gentoo

    # 配置网卡 livecd ~ # dhcpcd eth0 显示:offered 192.168.100.230 from 192.168.100.1 表示成功 #不同的机子ip不同 # 启动ssh服 ...

  6. 利用busybox, extlinux 在工控机CompactFlash(CF卡)上构建Linux系统(下)

    < 工控机 (AMD LX处理器平台, 非ARM) Linux kernel & Busybox 编译选项配置 > (一) 配置并编译Busybox: 说明, 此次编译的目标机不是 ...

  7. linux cf卡格式,CF卡上的Linux启动过程分析

    一个嵌入式linux操作系统可以简单的抽象为,引导程序bootloader.内核vmlinuz.文件系统filesystem. Bootloader是系统加电后运行的第一段代码,一般它只在启动系统时非 ...

  8. cf卡格式化后还能数据恢复么?相机cf卡误删怎么恢复

    cf卡格式化后还能数据恢复么?即使它自身有着比较大的优势,但是在日常使用过程中,还是会遇到数据丢失的问题,比如说在操作时,不小心误删除,意外格式化,或者中病毒等等.那么对于误格式化的情况来说,如果没有 ...

  9. Xscale PXA255处理器与CF卡的接口设计

    Xscale PXA255处理器与CF卡的接口设计 以导航设备存储系统应用为例,本文讨论了Intel Xscale PXA255嵌入式处理器与CF卡的硬件接口设计,并以读写CF卡扇区的程序为例,给出了 ...

  10. linux卸载cf卡命令,嵌入式Linux 中CF卡的驱动和管理技术研究

    在嵌入式Linux系统中,为了在没有PCMCIA控制器的情况下仍然要利用CompactFlash存储卡(简称CF卡)作为存储设备,作者从CF卡的硬件特性入手,在系统层基于CF卡的memory寻址访问方 ...

最新文章

  1. 如何提取明细表头_会计新手,如何开展做账工作?
  2. [Dynamic Language] Python 静态方法、类方法、属性
  3. 模拟投掷硬币100次
  4. 【面试经验分享】大厂HR在面试时,都想听你说些啥?
  5. session每次请求都是新建的吗_每次去火车站都是提心吊胆,感觉就像进了贼窝一样,有同感的吗?...
  6. 绝了!Pandas绘图功能
  7. Composer 本地路径加载 laravel-admin 扩展包
  8. 《剑指Offer》 不用加减乘除做加法
  9. UE4 Packaging and Cooking Games
  10. hibernate和struts实现分页
  11. Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array(动态规划.递推)
  12. 电脑长时间不用的文件找不到怎么恢复
  13. echarts制作两个纵轴的折线图
  14. Swift游戏实战-跑酷熊猫(一) 简介 (含源代码)
  15. 一起来学习网站SEO优化工作流程到底怎么做?
  16. iOS开发中设置UITableView每组头试图与第一行cell之间的分割线
  17. 计算机论文的技术路线图,怎么写好论文开题报告技术路线流程图
  18. java 重启路由器
  19. 无线射频芯片CC2540F256RHAR 中文资料介绍
  20. ImGUI 1.87 绘制D3D外部菜单

热门文章

  1. Java 32位最新版 (Java SE 8)
  2. 通过代码下载全国范围详细区县行政区Shp数据
  3. 捷联惯导算法与组合导航原理讲义捷联惯导基础知识剖析目录
  4. Window open使用教程
  5. 它!5 年代替狂卷的 CNN!
  6. Vbs调用MsAgent组件,很有趣
  7. 介绍几款串口监控工具
  8. MP4格式转换为AMV格式
  9. 7-15 sdut-数据类型-4 第七次全国人口普查数据分析
  10. 怎么在linux系统上安装软件,教你如何在Linux系统安装软件