天天看點

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