O que o disco Verificar após a gravação realmente faz para verificar os dados?

6

Eu imagino que seja algum tipo de comparação entre os arquivos originais e os arquivos que foram gravados no disco, mas alguém sabe como isso é realmente feito em um nível baixo?

Quer dizer, ele cria um hash do conteúdo de origem e de destino e os compara? Se for assim, armazena o hash do conteúdo gravado na RAM? Ou salva em um arquivo temporário no disco rígido? Existe um arquivo de log do que está acontecendo?

Apenas curioso para saber exatamente como esse recurso funciona :) E estou me referindo ao Windows Image Burner.

    
por user1301428 16.04.2014 / 18:05

2 respostas

12

Confira essas páginas do MSDN na API do Windows para o IBurnVerification e a IMAPI_BURN_VERIFICATION_LEVEL enum.

Para discos de dados, parece que no modo rápido ele não soma o disco inteiro, apenas uma seleção de setores. Em seguida, ele garante que as chamadas de API READ_DISC_INFO e READ_TRACK_INFO sejam bem-sucedidas no novo disco.

Para verificação completa, ele executa as verificações acima e, em seguida, faz uma soma de verificação completa na última sessão no novo disco, contra uma soma de verificação computada no fluxo de memória que está sendo gravado. As somas de verificação devem ser armazenadas em memória RAM, mas elas provavelmente são valores de vida curta. Observe que a comparação é contra a imagem de disco na RAM, não a própria mídia de origem, portanto, se os dados de origem não forem lidos corretamente, eles serão gravados incorretamente. A verificação não detectará isso.

Para discos de música, ele se concentra na verificação de READ_TRACK_INFO e no índice de disco, mas não executa um cálculo de soma de verificação. Não há modo de verificação completo para música.

    
por 16.04.2014 / 18:21
6

Frank explicou bem a verificação específica do Windows. Vou dar uma resposta mais geral.

What does Verify disc after burning actually do to verify the data?

I mean, does it create a hash of the source and destination content and then compares them? If it is so, does it store the hash of the burned content in RAM? Or does it save it in a temporary file on the hard drive? Is there a log file of what is going on?

Esse é certamente um modo pelo qual uma comparação pode ser implementada: hash one file (esperamos que com um suficientemente grande - leia baixa chance de algoritmo de colisão), repita para o outro, e compare hashes. Se é assim que uma verificação é implementada, então você poderá ver o LED do drive por um tempo, e então o LED do CD / DVD piscará por algum tempo.

Outra forma de implementar a verificação é ler um bloco de um arquivo, depois o mesmo bloco do outro arquivo, compará-los e repetir até o final do arquivo ser atingido. Nesse caso, você verá os LEDs das duas unidades alternando entre as duas direções.

É claro que, se o disco rígido e a unidade óptica não tiverem LEDs, isso não será tão óbvio, mas você ainda poderá vê-lo com algo como o ProcessMonitor, pois ele registrará uma série de leituras de uma só vez. e depois o outro, seja em uma única explosão grande, seja em pequenas rajadas alternadas.

I imagine it is some kind of comparison between the original files and the files that have been burned on the disc, but does anybody know how it is really done at a low level?

Na verdade, tudo o que ele realmente faz é liberar o cache da unidade para que a função de comparação esteja lendo os dados do disco real e não do cache de memória. Obviamente, esta é uma etapa crítica, porque se a verificação for feita a partir do cache, ela não representará o que realmente está no disco, portanto, a corrupção pode passar facilmente.

Você pode ver se uma comparação é feita a partir da unidade ou do cache na RAM pela rapidez com que ocorre. Se você fizer manualmente uma comparação simples (por exemplo, com WinDiff ou WinMerge ou por meio de hash com uma ferramenta de hashing), você notará que a comparação acontece muito mais rápido do que o esperado porque está lendo os arquivos do cache de memória. Você deve liberar o cache para forçá-lo a ler a partir do disco real. Para unidades ópticas (e outras mídias removíveis como flash-drives e cartões de memória, basta ejetar a unidade é suficiente para limpar o cache, mas para discos rígidos, não é tão simples (embora geralmente isso não importe, porque nova cópia é aquela que você quer testar).

    
por 16.04.2014 / 20:12