No meu post anterior foi abordado o assunto de Lock e Wipe no Android. Hoje, nosso objetivo é mostrar como realizar o Wipe no Windows Mobile, sistema operacional de mobilidade da Microsoft que, embora sendo uma plataforma sem expressividade nos smartphones modernos comercializados atualmente, ainda é muito importante no meio corporativo. Por isso é que vamos mostrar como realizar o Wipe nessa plataforma. Você deve estar se perguntando: e o Lock? Bom, em se tratando de Windows Mobile, a implementação do Lock é bem diferente em relação ao Wipe, por isso, achei melhor, primeiro, mostrar como se implementa o Wipe e, posteriormente, será mostrado como realizar o Lock, para quem tiver interesse em aprender sobre esse assunto.
Conceito
O conceito de Wipe, que também é chamado de Hard Reset de dispositivo, é o processo pelo qual são apagados todos os dados armazenados no dispositivo e suas configurações originais são restauradas. O Wipe funciona em dispositivos com Windows Mobile 5 ou superior.
Criando XML de configuração
O Windows Mobile permite configurações personalizadas através de arquivos XML especiais, contendo difinições específicas sobre uma determinada configuração que se queira aplicar no dispositivo. Obviamente que o formato do XML segue uma estrutura padronizada pela Microsoft. Você poderá ter mais detalhes dessa arquitetura clicando aqui. Também a aplicação desse XML de configuração no dispositivo se dá programaticamente.
Como nosso foco é aplicar o Wipe no dispositivo, segue abaixo o XML responsável pela sua execução:
<wap-provisioningdoc>
<characteristic type='RemoteWipe'>
<parm name='doWipe' value='1'/>
</characteristic>
</wap-provisioningdoc>
Uma maneira simples de criar instâncias de XML é usar a classe XmlDocument, contida no namespace System.Xml. Um exemplo de como utilizá-la encontra-se logo abaixo:
string strXml = @"<wap-provisioningdoc>
<characteristic type='RemoteWipe'>
<parm name='doWipe' value='1'/>
</characteristic>
</wap-provisioningdoc>";
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(strXml);
Pronto. Já temos à mão nossa instância de XML capaz de aplicar o Wipe em dispositivos baseados em Windows Mobile. Mas, como vamos fazer isso?
Classe ConfigurationManager
Para aplicar uma determinada configuração via XML em um dispositivo, precisamos utilizar a classe ConfigurationManager, que se encontra disponível no namespace Microsoft.WindowsMobile. Essa classe contém o método que nos interessa: ConfigurationManager.ProcessConfiguration. Esse método é responsável por processar um XML de configuração no dispositivo.
No nosso exemplo, teríamos algo assim:
ConfigurationManager.ProcessConfiguration(xmlDocument, true);
Para maiores informações dessa classe, clique aqui.
Etapa Final
Para efetivarmos o Wipe do dispositivo, precisamos fazer uma chamada de método via PInvoke, que significa chamar um método de uma dll nativa do Windows Mobile. Isso se faz necessário, pois o método que vamos precisar chamar não se encontra disponível no .NET Compact Framework. A dll que nos interessa é a Core.dll. Para chamar algum método dessa dll, precisamos referenciá-la em nosso código, no escopo da classe, como mostrado a seguir:
[DllImport("coredll")]
private static extern void SetCleanRebootFlag();
Após isso, já podemos chamar o método SetCleanRebootFlag() em nosso código. É importante a chamada desse método após processarmos o XML contendo a definição de Wipe, para que o dispositivo reinicie efetivamente, restaurando suas configurações originais.
O próximo post abordará a questão do Lock de dispositivos baseados em Windows Mobile. Não percam! Até mais!
Escrito por Maycon Roberto



