# Enhanced Write Filter

Enhanced Write Filter ou EWF (Filtro de escrita melhorado em uma tradução literal) é uma tecnologia criada pela Microsoft para melhorar a velocidade de gravação de dados em unidades de disco rígido e unidades de estado sólido, por meio de cache na Memória RAM ou em outro disco.

## Fundamentos

Os computadores possuem discos rígidos (HDs), que são responsáveis por armazenar permanentemente os dados dos usuários e os programas instalados no computador. Além disso, a maioria dos programas usados em computadores, tais como programas de escritório (Microsoft Word, Microsoft Excel, Outlook), Browsers (Firefox, Internet Explorer), e uma infinidade de outros programas, utilizam-se de arquivos temporários para armazenar seus dados de utilização. Estes arquivos são constantemente acessados e gravados por estes programas. Sendo assim, é correto afirmar que, ao usar o computador, este está constantemente lendo e gravando dados no disco.
Por definição, os HDs são os principais limitadores de performance em um computador. Por mais rápidos que sejam, ainda são bem mais lentos do que os módulos de memória RAM ou o processador. O problema é agravado quando, ao invés de usar discos rígidos, usam-se unidades de estado sólido (SSD), pois estas geralmente apresentam um desempenho ainda mais baixo do que os discos rígidos convencionais (mas isso não é regra - existem SSDs mais rápidos que HDs).
Discos SSD ainda sofrem com um outro problema, que é a limitação da quantidade de gravações em um mesmo bloco de memória. Como toda memória flash, um disco SSD tem vida útil limitada, e pode cada bloco pode ser gravado um número X de vezes (geralmente acima de 100 milhões de vezes, dependendo do fabricante e modelo). Mesmo a quantidade de gravações por setor ser alta, ela ainda é limitada, e dependendo da frequencia de uso, pode-se inutilizar um disco como este em poucas semanas (usando em sistemas altamente transacionais, por exemplo).

## História

O EWF foi criado pela Microsoft e incluído no Windows XP Embedded Edition para resolver parte deste problema. Esta versão do Windows XP foi criada para ser embarcada em dispositivos portáteis ou que não necessariamente fazem o papel de um computador, tais como Set-top boxes, terminais ATM, aparelhos eletrônicos, automóveis, etc. Este tipo de dispositivo geralmente não dispõe de uma unidade de disco rígido, e muitas vezes em seu lugar é utilizado um cartão de memória flash ou mesmo algum tipo de memória de somente leitura (como um CD ou DVD). O Windows precisa e sempre precisará de um espaço de memória para escrever seus arquivos temporários e fazer seu swapping, porém, em sistemas onde não há um disco gravável, isso se torna um problema. É ai em que o EWF entra.
Apesar de ter sido criado para o Windows XP Embedded Edition, é possível usar o EWF em todas as outras versões do Windows XP, como o Home, o Professional ou o Media Center Edition, porém, a Microsoft, apesar de já ter feito isso antes, não dá suporte e não disponibiliza mais este módulo do Windows em seu web site. Interessados em modificar seu Windows terão de recorrer a outras fontes de informação na Internet.

## Funcionamento

O EWF funciona como uma camada entre o disco e o Windows. Ele reserva um espaço na memória RAM, e grava neste espaço toda e qualquer requisição de escrita no disco ao qual ele protege. Estes arquivos, escritos pelo sistema operacional (e por qualquer outro programa) não são gravados no HD do computador, porém, ficam disponíveis como se tivessem sido gravados. O EWF gerencia e mantém atualizada a informação entre o que realmente está no HD e o que está em seu espaço reservado na RAM, e entrega isso de forma transparente ao usuário. O usuário ve seus arquivos como se eles realmente tivessem sido gravados no HD.
Sendo assim, o HD não mais grava nada, tornando o sistema completamente independe de escritas no HD, possibilitando assim um melhor desempenho e uma economia na quantidade de gravações ao disco.
É possível efetivamente gravar os dados "não salvos" da memoria RAM para o disco, para isso, basta executar um comando commit no EWF e este se encarrega de atualizar o HD com os dados incluídos, alterados ou excluídos. Funciona como um banco de dados com suporte a transações. Assim, as gravações que antes eram feitas de modo aleatório agora são feitas de uma única vez, de forma sequencial, garantindo a máxima performance da gravação.

## Formas de uso

É possível usar o EWF para transacionar um disco para a memória RAM ou para outro disco. Geralmente o uso dado a esta funcionalidade é a gravação na memória RAM, e com isso, você pode criar dispositivos como:

### Instalações de somente-leitura

São computadores com o Windows XP instalado de forma que não pode ser alterado. O usuário pode fazer quaisquer alterações no Windows enquanto está usando o computador, e sempre que o computador for reiniciado, o Windows terá voltado a ser como era antes do último boot. Isso é especialmente útil para lan-houses, cyber-cafés e computadores de uso público, pois elimina um grande custo de manutenção com reinstalações.

### Dispositivos embarcados

Como há um ganho em performance, um sistema com esta funcionalidade inicializa e desliga muito mais rapidamente, permitindo seu uso fora de computadores. Exemplos de aplicações em dispositivos embarcados são computadores de bordo automotivos, ATMs bancários, sistemas de GPS, telefones celulares e outros aparelhos eletrônicos.

### Netbooks e computadores com discos SSD

Netbooks, ou mini-notebooks, são computadores de baixo custo e baixo desempenho. Geralmente este tipo de computador tem uma unidade SSD de baixa performance, que limita muito seu uso com o Windows. Usando o EWF, é possível aumentar expressivamente a velocidade da experiencia de uso do computador, tornando-o completamente viável para o uso contínuo. Este tipo de computador geralmente vem com Linux instalado de fábrica, e ao instalar o Windows, o desempenho dele é terrivelmente degradado pelos motivos descritos acima. O EWF resolve este problema.