Převod String na Double

Menší krize v Compact Framework

Potřebujete-li konvertovat string na double, lze na to použít ve visual basic.net CF dostupné Cdbl() a nebo frameworkové convert.toDouble(). Záhada ovšem nastává, pokud vytvoříte konverzi a pustíte na pda s regionálním nastavením angličtina a potom čeština. Každý formát má desetinný oddělovač jiný a teď ta bomba, konverze se řídí! regionálním nastavení. Takže co vám bez chyby projde v “anglickém” pda to na “českém” neprojde/padne. Krása. Nějak jsem nenašel jednoduché řešení a tak jednoduše odchytávám vyjímku a konvertuju oddělovač

To jen abyste věděli … a já nezapomněl.

Triky s TreeView v .NET Compact Framework

článek je psaný a validní pro .NET Compact Framework (CF) v 2.0 a jazyk vb.net

Sepsal jsem tipy pro celořádkový výběr, přidání události click, doubleclick a v neposlední řadě velmi užitečné barvení řádků/pozadí.

Trik pro černé pozadí a bílý text

Tento problém má jednoduchý základ. Pokud vytvoříte objekt TreeView v CF není podporována vlastnost .BackColor. Samotné VS studio vás na to upozorní. Tím pádem není možné měnit barvu pozadí. První možností je[MORE] napsat vlastní TreeView odvozený z Object. Druhé řešení jsem zvolil já.

Každý přidávaný TreeNode má povoleny vlastnosti pozadí a barvy fontu. Proto je potřeba vytvořit a nastavit asi takhle:
Dim node As New TreeNode
node.Text = "aa"
node.ForeColor = Color.WhiteSmoke
node.BackColor = Color.Black
TreeView.Nodes.Add(node)

Tím máme černé pozadí.

Problémy

Černá barva je jen pod textem samotným. V CF není vlastnost pro nastavení FullRow. To lze obejít přidávání hodně (hodně hodně) mezer za zobrazený text. Něco jako +” “. Prasečina, ale funguje. Potřebujeme výsledky. Výkonostně to není problém. Vzniká tím druhotný problém s horizontálním posuvníkem. Ten nelze vypnout a tak je možnost ho buď skrýt jinou komponentou (mimo form) nebo napsat inteligentní algoritmus, který řádek doplní jen určitým potřebným množstvím mezer. Já volím první.

A poslední problém, který je potřeba vyřešit pro černé pozadí? I když bude TreeView prázdný musí být vyplněn položkami a to přesně počtem, které se vejdou na jeho výšku. Výška musí být násobek výšky řádku. Prázdné položky budou dělat černo a když začnou přibývat data, lze prázdné odebírat. Samotný algoritmus ať si každý udělá jak potřebuje.

Trik pro přidání OnClick a DoubleClickeventu(události)

TreeView nemá událost OnClick a občas by se mohla hodit :). Zase máme víc možností.

Buď se použije nízkoúrovňové GetFocus (viz msdn) nebo se použije nějaká existující událost a obalí se logikou. Na to je vhodná událost AfterSelect. Za běhu přidáme pomocí AddHandler TreeView.AfterSelect, AddressOf MojeFunkceClick. Samotná MojeFunkceClick vypadá asi takhle Sub MojeFunkceClick(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs). Když tedy někdo označí položku v PDA spadne to do týhle funkce. Zde máme k dispozici e proměnou, v které je například e.Node.Tag nebo e.Node.Text. Můžeme napsat logiku na ignorování našich černých prázdných řádků. Taky sem můžeme vyrobit funkce na mazání řádku atd. Ovšem aby mohl AfterSelect opět fungovat musíme TreeView.SeletedNode = nothing. Tím jsme vyrobili onclick. DoubleClick bude vyžadovat nějakou proměnou a timeout abychom mohli realizovat ten dvojklik. Nechám to na každém.

FullRow a barevně označený řádek

S předchozí funkcí TreeView.SelectedNode= nothing přijdete o označený řádek. Proto je vhodné, uchovat si který že to byl řádek kliknut a při vykreslování položek do TreeView změnit barvu pozadí/textu a tak dále. Dá se s tím docela kouzlit. Dělat multiselect a podobně. A ten FullRow. V dokumentaci je samotná funkce jen pro velký framework a ještě s jistými omezeními. Jak jsem psal výše, stačí k textu přilepit hodně mezer a je vystaráno.

Optimalizace v PDA (Compact Framework)

Za oknem léto. To každej musel zaregistrovat. Není tudíž mnoho času rozšiřovat maxigeniální myšlenky. Radši jezdím, cvičím, jím, spím a tak dále. Teď zpět k dnešnímu tématu. Několikátý měsíc, čistě pracovně, rozšiřuju svoje vědomosti o taje a zákoutí .NETího Compact Frameworku pro PocketPC alias PDA, MDA. O víkendu jsem vyvíjel novou knihovnu pro asynchronní připojení. Ta minulá byla trošku zrezlá. A když bylo dopsáno dostal jsem naprosto geniální nápad.

Vlastní dialog

Ano. Nápad byl vcelku prostý. Do skinovací knihovny přidám podporu pro vlastní dialogové okno. Samozřejmě zcela grafické. Znáte dnešní standard, na něco kliknete, celá obrazovka ztmavne a vyskočí dialog s nějakou fajnovou hláškou. Po odkliknutí to zase všechno odtmavne a jede se dál.

Úkol snadný, ne ovšem na velmi omezené platformě PDA. Tady neexistuje poloprůhlednost. Tady plno věcí neexistuje. První co jsem tedy vymyslel, byla jednoduchá FAKE aplikace, která měla předem připravené obrázky ztmaveného pozadí. Toto řešení má ovšem zásadní problém. Neumožňuje být jakkoliv flexibilní. A taky, pokud budu dialog volat odjinud, než jsem si předkreslil, nebude grafika souhlasit.

Řešení

Po nějakém tom pátrání v dokumentaci jsem pomocí PInvoke sesmolil funkci, která: sejme aktuální obrazovku PDA, uloží do bitmapy. Bitmapu potom pixel po pixelu přepočítá na “tmavé barvy” (prakticky snižuje saturaci a jas) a na tuto bitmapu doprostřed nakreslí obrázek již samotného dialogu – nějaký fancy rámeček s dialogem. Myšlenka geniální, po splácnutí preview dokonce i funkční, no bohužel smrtelně pomalá. Moje představa byla tuto operaci stihnout tak do 50-100ms. Jak dalece jsem se mýlil.


[MORE]

Optimalizace začíná

Nebudu to zdržovat. Celý proces trval neuvěřitelných 10 sekund. Za všechno mohl kód bitmap.GetPixel(x,y). A k němu reverzní SetPixel. Tyto neskutečně neoptimalizované funkce není radno používat. To už jsem věděl z dob programování grafických prvků v C++.

Zapátral jsem a od MVP lidí z MSDN jsem se dozvěděl optimalizační tipy. Základem je použít Bitmap.LockBits a UnlockBits. Tím se dostaneme přímo k nemanagované paměti bitmapy a můžeme začít řádit jak je libo. Výstupem je bajtové pole jednotlivých subpixelů(R,G,B). Pro rozlišení 240×320 je velikost pole nějakých 240*320*3=230400 pixelů. Toliko bodů je třeba nějakým způsobem zanalizovat a přepočítat (jas, kontrast, barevnost atd).

Bláhově jsem říkal, máš vyhráno. Celý proces se zrychlil na neuvěřitelných 180ms. Stačilo tedy napsat funkce na transformaci pixelu a bylo. Napsal jsem tedy vlastní RGB<->HSB transformační funkce. Sem se s nima patlal víc jak den, přetížené, patřičně okomentované, prvotřídní práce. V tuhle dobu jsem ještě netušil, že PDA je potřeba optimalizovat. Když jsem ověřil, že funkce fungují korektně, prostě jsem do smyčky s pixely vložil něco takového

ColorTransform.RGBToHSB(R, G, B, dH, dS, dB)
dB = dB * 0.4
dS = dS * 0.7
ColorTransform.HSBToRGB(dH, dS, dB, R, G, B)

Kód fungoval perfektně, výstupem bylo přesně to co jsem požadoval. Ale ouha. Transformace a násobení každého pixelu sežralo neuvěřitelných 5150ms. A tak jsem začal hledat, proč tomu tak je. Zakomentoval jsem tu část s násobením a hnedka jsem byl o pár sekund rychlejší. Už bylo jasno. Procesor v PDA stěží sčítá, natož násobí 32bit float číslo. A tak jsem přemýšlel dál.

Různá řešení

  • převést pixel na šedou a rozkopírovat do všech kanálů
  • vzít jeden kanál, dělením ztmavit a rozkopírovat do ostatních
  • sečíst všechny kanály a výsledek vydělit nějakým větším číslem
  • počítat jen sudé řádky/sloupce a výsledek rozkopírovat
  • počítat jen nutnou oblast, ostatní vynechat

Každý z těchto nápadů o něco a některé i slušně zrychlily vykonávání, ale stále jsem se pohyboval nad hranicí jedné sekundy a to bylo nepřijatelné. Musí se to počítat v reálném čase. Především výsledky s jedním kanálem vypadaly nadprůměrně hnusně. I to bych překousnul, jenže časy neodpovídaly.

No a tak jsem do noci seděl nad problémem, pořád si prohlížel hodnoty pixelu před ztmavením a po ztmavení a přemýšlel, jak tuhle hodnotu spočítat bez násobení, dělení, sčítaní. Jo a pak mě to samozřejmě trklo. Bitový posun. Není to přesné, nemá to moc možností, ale funguje to pekelně rychle kdekoliv. Tím jsem byl v podstatě hotov. Vzal jsem součet barev jednoho pixelu, shiftnul o 4 a rozkopíroval. 280ms. Super. Výstup cca dobrý.

R = (R + G + B)
R = R >> 4
G = R
B = R

Pak jsem zkusil ještě jednu úpravu a kupodivu, zrychlení a zlepšení výstupu. 255ms

R = R >> 3
G = G >> 3
B = B >> 3

Chybné cesty

Bitový posuv je tak rychlá operace, že i uvažované vynechání (nepočitání) určité oblasti, je pomalejší, než vše nechat přetáhnout posuven. Samotná režie na vyhodnocení, jestli pixel je v oblasti nebo není, je ohromná. To jsem dokonce procházení pole přepsal s doporučenými Int32 jakožto nejrychlejší možný datový typ. Počítání X a Y se samozřejmě musí provádět už v samotném cyklu nikoliv až pomocným výpočtem uvnitř cyklu. Ta režie je tak veliká, že ani vynechání všech pixelů nestačí na kompenzaci zpomalení. Tady by museli přijít taky nějaký optimalizace. Například rozdělit bitmapu pomocí BitBlt na více menším a ty zpracovávat. Nebo vyhodnocovat pozici pixelu jen občas :-/

Přikládám nějaký obrázky, jako ukázku, co je možné a za jakou dobu získat optimalizací. Rozhodně je při takových masových akcích dobře přemýšlet co a jak. Vyplatí se to. V mém případě nejde o přesné zobrazení, oko je blbý, takže je to v pohodě. Nedovedu si představit rychlost při tranformacích s maticí. Tady prostě neplatí běžná pravidla. A teď jsem dostal nápad na parádní prohlížeč obrázků :)

Reálné nasazení

Po doplácání algoritmu do mojí grafické knihovny, jsem vyzkoušel některý scénáře použití a ukázalo se to neskutečně nepoužitelný. Načtení dat z XML, vytvoření prvků, screenshot, transformace a vykreslení, to všechno zabírá víc jak sekundu času. A to je na kliknutí velká prodleva. Nakonec jsem to vyřešil vtlačením vrstvy mezi objekty. Tím se starám o cachování a preload dat. Ještě to bude chtít nějakou inteligenci pro preload. Takhle všechno zabírá moc ramky.

Test: CF karty A-Data Speedy 2GB[ENG]Review: CF card A-Data Speedy 2GB[/ENG]

Dneska si dáme nějaký ten naučný článek, plný informací a poznatků. Bla bla. Koupil jsem jentak na zkoušku kartu Compact Flash A-Data Speedy 2GB. Zajímalo mě, jak je na tom nízkonákladový produkt z pohledu rychlosti.[MORE]

Protáhnul jsem kartu měření v HDtachu, SiSoft Sandrou 2007 a ultimativní utilitou hwBench v3.12. Grafy a výsledku jsou přiloženy. Co k tomu dodat. Karta je poměrně svižná při čtení a jako spouštěcí disk se dá použít bez větších obtíží. Benefit nízké přístupové doby je patrný. Zápis je ovšem věc smrtelná. Doporučuji nastavit maximální velikost sektorů pro alespoň symbolické urychlení. Velké soubory (mp3) už nahrává obstojně. Počet zápisů těžko odhadovat. Kartu jsem nerozebíral, abych se podíval co je uvnitř za paměťový čip.

SiSoft Sandra měření

[GRAPH||Rychlost (SiSoft Sandra 2007) |zápis (kB/s), čtení (kB/s)]
soubor 512B|soubor 32kB|soubor 256kB|soubor 2MB|soubor 64MB
17;1188|1835;9123|4335;9690|5666;10923|6554;10923
[/GRAPH]

hwBench v.3.12 měření

[GRAPH||hwBench v.3.12 |]
čtení|náhodná přístupovka|swapping|installing|Word|Photoshop|copying|F-Prot
10815{min. 10786 kB/s};10914{max. 10914 kB/s}|0,21{min 0,21ms};0,49{max. 0,49}|7640{7640 kB/s}|15331{15331 kB/s}|11300{11300 kB/s}|11108{11108 kB/s}|13069{13069 kB/s}|9740{9740 kB/s}|
[/GRAPH]

HDTach 3 graf rychlosti

HDTach a jemu podobné utility trdošíjně hlásili 10MB/s a ani o mego více. Mohu se domnívat, že to bude hranice karty. Asi rychlost řadiče. Karta byla připojená na IDE kanál a pracovala v DMA režimu.

Závěr

Podle výsledků testů je vidět, že karta není úplně špatná a ve spojení do raid 0 bude podávat naprůměrné výsledku za minimální cenu. Stejně tak bude dobrá pro spouštění portable aplikací. Nehodí se určitě na místa s častým zápisem.

[ENG]

Today, I was thinking of you and bought super cheap (about 15$/2GB) Compact Flash card Speedy 2GB by A-Data. I was wondering how this shitty card is quick.[MORE]

I make some tests with HDtachu, SiSoft Sandra 2007 and super-pimp utility hwBench v3.12. The graphs and results are around. The card is relatively quick in read operations. Writing is disaster. Do not use as write-disc! :) I didn’t disassembly the card so that I don’t know what chip is inside – would be better for more information.

SiSoft Sandra measuring

[GRAPH||Speed (SiSoft Sandra 2007) |Write (kB/s), Read (kB/s)]
file 512B|file 32kB|file 256kB|file 2MB|file 64MB
17;1188|1835;9123|4335;9690|5666;10923|6554;10923
[/GRAPH]

hwBench v.3.12 measuring

[GRAPH||hwBench v.3.12 |]
reading|random access|swapping|installing|Word|Photoshop|copying|F-Prot
10815{min. 10786 kB/s};10914{max. 10914 kB/s}|0,21{min 0,21ms};0,49{max. 0,49}|7640{7640 kB/s}|15331{15331 kB/s}|11300{11300 kB/s}|11108{11108 kB/s}|13069{13069 kB/s}|9740{9740 kB/s}|
[/GRAPH]

HDTach 3 speed graph

As you see, the HDTach says 10MB/s and no more. I think, 10MB/s is construction speed of the card. I tested card on IDE channel with DMA enabled.

Conclusion

The card is good for storage and read-only software. You brought lots of fun for some money. Raid 0 would be good. Never use in write-only apps.

[/ENG]

Test: Redukce SD na CF[ENG]Review: adapter SD->CF[/ENG]

Na ebay je plno zajímavostí, pořídil jsem si čistě z pokusných účelů redukci z SD karty na CF slot od jisté firmy EagleTec za směšných necelých 200kč.

První vadou je podpora starých SD karet, tj do 2GB. Zapomeňte na SDHC velké a rychlé karty. Karta je tlustého formátu CF type 2. většinou nebývá problém. Druhá vada. Nefunguje jako disk na IDE. Vhodné tedy jen do foťáků. Co si budeme povídat, SD karty sou levnějsí a s redukcí by to mohlo bejt dobrá koupě. Není.

A teď poslední rána. Provedl jsem měření za použití karty v redukci a bez redukce a žádná sláva to není, na druhou stranu, výrobce deklaruje jen 1MB/s. Hodnoty jsou maximální.

[GRAPH||Rychlosti redukce SD->CF|čtení (MB/S) ]
bez redukce|s redukcí
17|6,6
[/GRAPH]

[GRAPH||Rychlosti redukce SD->CF| zápis (MB/S) ]
bez redukce|s redukcí
6,1|2,3
[/GRAPH]

[ENG]

I bought on ebay this gadget. Just for test and review, how quick adapter is. My brand new adapter is made by EagleTec company. I payd only 12$ including shipping to Czech Republic.

First, and biggest problem! Adapter support ONLY SD cards. SDHC card not working! Well, maximal size of card is only 2GB. Forgot any quick and big SDHC cards. Adapter is CF type 2. Second problem. Booting is not supported. Suitable only for digital camera

And last info. Speed. Well, I expected some better result, but manufacturer promised only 1MB/s. Speed is maximal!

[GRAPH||Adapter SD->CF – max speed |read (MB/S) ]
without adapter|with adapter
17|6,6
[/GRAPH]

[GRAPH||Adapter SD->CF – max speed | write (MB/S) ]
without adapter|with adapter
6,1|2,3
[/GRAPH]

[/ENG]

Jak nainstalovat EWF filtr na Windows XP

Co je EWF?

Pokud chcete provozovat klasické Windows na paměťové kartě (nebo SSD disku) je potřeba zajistit, aby nedocházelo ke zbytečným zápisům. Při použití NTFS je téměř jisté, že se dožijete smrti své polovodičové karty. Samotný Microsoft má na tenhle „problém“ odpověď v podobě EWF(=rozšířený filtr zápisu) filtru, který je běžně dostupný v Windows XP embedded, což je taková odlišná verze systému. EWF filtr blokuje veškeré zápisy na disk a ukládá je do paměti. Pomocí řídících příkazů je potom možno všechny změny najednou nechat na disk zapsat, případně zapomenout. Představte si nejdokonalejší ochranu proti virům. Něco se vám stane, stačí restart a je vše jako nové.[MORE]

Co k tomu:

Především je potřeba získat samotná XPe SP2. Postačí [LINK:windowsEmbeddedTrial:trial verze] Všechny soubory najdete právě zde. Jak je najdete nechám na vás. A jako druhou hlavní součástku potřebujete fungující Windows XP.

Jdeme na to:

  • v adresáři [WIN]/system32/ přejmenujte winlogon.exe na winlogon.exe.bak
  • zkopírujte z XPe soubor minlogon.exe do adresáře [WIN]/system32/ a ihned ho přejmenujte na winlogon.exe
  • jestli na vás vyskočí nějaký to varování o přepsání tak se tím proklikejte. Pokud si pořád nevíte rady s přepsáním, zkuste to z freeDOSu nebo nějakýho jinýho boot OS.
  • nezapomeňte, že můžete mít aktivní Systémovou ochranu souborů. Zabraňte přepsání souboru winlogon.exe na původní.
  • vytvořte souboru minlogon.reg a dejte do něj obsah:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
“Config”=dword:00000017

  • uložte soubor a aktivujte. Nechte soubor sloučit.
  • Restartujte !!
  • jestli jste vše zvládli, tak systém bude nabíhat jako obvykle. V prvním startu to bude chvíli trvat. Budou se vykonávat nějaký ty Nastavení účtu – pozor, všechna custom nastavení vašeho účtu jsou pryč. Dělejte to radši na novém čistém stroji. Před tím, než ho zasviníte vlastní customizací.
  • udělejte další restart a po naběhnutí zkontrolujte, že soubor winlogon.exe má tu správnou velikost – tím si ověříte, že je vše stoprocentní.

Teď můžeme pokračovat k samotné intalaci EWF. Předtím je potřeba několik nastavení v systému.

  • vypněte Virtuální pamět (Nepoužívat stránkovací soubor) – jak se to dělá najdete na googlu
  • vypněte nástroj Obnovení systému na všech discích

Najděte si v XPe SP2 tyhle soubory:ewf.sys, ewfntldr a ewfmgr.exe

  • přejmenujte soubor C:\ntldr na C:\ntldr.bak
  • nakopírujte soubor ewfntldr a přejmenujte na ntldr
  • nakopírujte soubor ewfmgr.exe do [WIN]/System32/
  • nakopírujte soubor ewf.sys do [WIN]/System32/drivers/
  • vytvořte ewf.reg s obsahem:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dfrg\BootOptimizeFunction]
“Enable”=”N”
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OptimalLayout]
“EnableAutoLayout”=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
“NtfsDisableLastAccessUpdate”=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters]
“EnablePrefetcher”=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager]
BootExecute=””
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_EWF]
“NextInstance”=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_EWF\0000]
“Service”=”EWF”
“Legacy”=dword:00000001
“ConfigFlags”=dword:00000020
“Class”=”LegacyDriver”
“ClassGUID”=”{8ECC055D-047F-11D1-A537-0000F8753ED1}”
“DeviceDesc”=”EWF”
“Capabilities”=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_EWF\0000\Control]
“ActiveService”=”EWF”
[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\Protected\Volume0]
“Type”=dword:00000001
“ArcName”=”multi(0)disk(0)rdisk(0)partition(1)”

  • Teďka zkontrolujte poslední řádek reg souboru. ArcName musí být vaše paměťová karta. Případnou cestu konzultujte s boot.ini na kořeni. Jak to tady vidíte je to nastavený klasicky na primární kanál IDE master
  • kdyby někoho zajímalo, co který registr zajímá, tak jsou to optimalizace proti zbytečným zápisům. Vypnutá automatická defragmentace, prefetch, ntfs timestamp atakdále. Vše samozřejmě pro snížení počtu zápisů na disk a tím zbytečného zatěžování EWF filtru.
  • uložte ewf.reg
  • než budete slučovat soubor je potřeba nastavit práva v registrech :(
  • v regeditu se dotlačte do adresy „HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root“ a klikněte na složku Root a nastavte oprávnění. Skupině „Everyone“ udělte plný přístup (Full Control).
  • Nyní můžete sloučit ewf.reg do registrů
  • Restartujte

Až vám stroj naběhne, můžete si ověřit funkci filtru. Nastartujte příkazovou řádku a zadejte „ewfmgr c:“ kde c: je chráněný disk proti zápisům. Výstupem bude přehled aktivity filtru, zabraná paměť atakdále ;)

Když to v téhle chvíli nebude fungovat, asi máte blbě něco v minulých krocích. Především se zaměřte na registry a slučování a oprávnění. Dost častá chyba. Taky zkontrolujte přítomnost všech souborů a případně odpojte všechny další disky, které nutně nepotřebujete. Protože máte teď systém nastavený tak trochu tvrdě, doporučuju stroji nacvakat co nejvíc ramky najdete. Nepoužíváte stránkování a každý zápis na disk se ukládá do paměti, kde zabírá místo. A ta jednou dojde. Pokud máte tu možnost, nastavte stránkovací soubor na jiný/další disk, kterému zápisy nevadí. Když budete dlouhodobě zapisovat na chráněný disk, radši filtr vypněte.
A teď ovládací příkazy do příkazové řádky:

Ewfmgr c: -commitanddisable –live
– okamžitě vypne filtr a všechny změny z paměti uloží na disk

ewfmgr c: -enable
– zapne filtr při dalším bootu windows!

více [LINK:windowsEmbeddedTrialMSDN:v MSDN]

Závěr:

Nebudu popisovat jak dostat vaše windows na flash kartu, zmenšování a optimalizace paměti/rychlosti je všude plno. Doporučuju si připravit instalaci na klasický disk, provést všechny požadované instalace, úpravy atd, potom provést instalaci EWF filtru a nakonec provést transfer na flash disk. Pokud máte problém s „removable media“ a NTFS [LINK:windowsEmbeddedTrialNTFS:zkuste přečíst]. Prostě to nějak nejde dohromady a je potřeba použít FAT. Když budete mít potíže, naformátujte vaší flash kartu v čistém DOSu pomocí format.com, disk.exe a bootprep.exe – ten najdete vítekde :)

Postup je asi takovýhle:

  • nastartujte do DOSu (Win Millenium boot disketa – třeba), zapojte jako jediný disk vaši flash kartu
  • zadejte „format c: /s“ odpráskněte
  • restartujte znovu – nyní ovšem karta musí sama nabootovat!!!
  • Znova udělejte „format c“ bez „/s“!
  • Zadejte „bootprep /dc“ a odpráskněte
  • Nyní je možné tuto kartu použít jako ntfs – stačí ji naformátovat ve Win
  • Jakýmkoliv šíleným způsobem nakopírujte připravené windows na připravenou flash kartu – můžete použít nějaký ten linux, třetí windows apodobně :) hlavně zkopírujte všechno, skryté, systémové, nulové

Nyní odpojte všechno co není flash disk a nabootujte do vašich EWF Windows XP ;). Z příkazové řádky potom překontrolujte funkci EWF filtru a už je to jen a jen na vás co bude dál. Přeji dlouhou životnost vaší flash karty.