API - desativar o cache de disco do Windows XP |
Top Previous Next |
function DesativarCacheDiscoXP(const ExibirMensagem: Boolean): Boolean; var R : TRegistry; Chave : string; CacheAtivo: Boolean; begin Result := False; if mRot.VersaoWindows in [vw95, vw98] then Exit;
CacheAtivo := True; // por padrão vamos dizer que ele está ativado (default do WindowsXP) R := TRegistry.Create; R.RootKey := HKEY_LOCAL_MACHINE;
// vamos ver como está o cache if R.OpenKey('\SYSTEM\CurrentControlSet\Services\Disk\Enum', False) then Chave := R.ReadString('0');
if R.OpenKey('\SYSTEM\CurrentControlSet\Enum\' + Chave + '\Device Parameters\Disk', False) then CacheAtivo := R.ReadInteger('UserWriteCacheSetting') = 1;
if CacheAtivo then begin if R.OpenKey('\SYSTEM\CurrentControlSet\Enum\' + Chave + '\Device Parameters\Disk', True) then R.WriteInteger('UserWriteCacheSetting', 0);
if ExibirMensagem then mDlg.Alerta('O sistema operacional Windows XP estava com cache de disco ativado.'#13#13 + 'Esta configuração ativa a gravação em cache para aprimorar o desempenho do disco, '#13 + 'mas uma falta de energia ou falha no equipamento pode resultar '#13 + 'em dados perdidos ou corrompidos.'#13#13 + 'Por estes motivos o cache foi desativado pela Frente de Caixa, '#13 + 'para esta alteração entrar em vigor, o Windows será reiniciado.'#13#13 + 'ATENÇÃO: Se a Frente de Caixa exibir esta mensagem sempre que iniciar o computador,'#13 + 'consulte o manual do usuário para saber como desativar o cache de disco manualmente.');
if (not mRot.FlagProgramador) then begin mRot.Reboot; Result := True; end; end;
R.CloseKey; R.Free; end; |