La funzione "verifica disco" è ottima per assicurarti che il tuo disco appena masterizzato sia andato bene, ma come funziona esattamente? Il post di domande e risposte di SuperUser di oggi contiene la risposta alla domanda di un lettore curioso.
La sessione di domande e risposte di oggi ci arriva per gentile concessione di SuperUser, una suddivisione di Stack Exchange, un raggruppamento guidato dalla comunità di siti web di domande e risposte.
Foto per gentile concessione di cobalt123 (Flickr) .
La domanda
L'utente1301428 del lettore SuperUser desidera sapere come vengono verificati i dischi dopo la masterizzazione:
Cosa fa effettivamente la verifica del disco dopo la masterizzazione per verificare i dati? Immagino sia una sorta di confronto tra i file originali e i file che sono stati masterizzati sul disco, ma qualcuno sa come è fatto veramente a basso livello?
Voglio dire, crea un hash del contenuto di origine e di destinazione, quindi li confronta? In tal caso, memorizza l'hash del contenuto masterizzato nella RAM? O lo salva in un file temporaneo sul disco rigido? Esiste un file di registro di ciò che sta accadendo?
Sono solo curioso di sapere esattamente come funziona questa funzione. E mi riferisco a Windows Image Burner.
Come funziona il processo di verifica del disco?
La risposta
I collaboratori di SuperUser Frank Thomas e Synetech hanno la risposta per noi. Il primo, Frank Thomas:
Dai un'occhiata a queste pagine MSDN sull'API di Windows per IBurnVerification l'interfaccia e il IMAPI_BURN_VERIFICATION_LEVEL enum.
Per i dischi di dati, sembra che in modalità rapida non effettui il checksum dell'intero disco, ma solo di una selezione di settori. Quindi si assicura che le chiamate API READ_DISC_INFO e READ_TRACK_INFO abbiano esito positivo sul nuovo disco.
Per la verifica completa, esegue i controlli precedenti, quindi esegue un checksum completo sull'ultima sessione sul nuovo disco rispetto a un checksum calcolato sul flusso di memoria da masterizzare. I checksum devono essere memorizzati in ram, ma sono probabilmente valori di breve durata. Si noti che il confronto è rispetto all'immagine del disco nella RAM, non al supporto di origine stesso, quindi se i dati di origine non sono stati letti correttamente, verranno scritti in modo errato. La verifica non lo rileverà.
Per i dischi musicali, si concentra sul controllo di READ_TRACK_INFO e sul sommario del disco, ma non esegue un calcolo del checksum. Non esiste una modalità di verifica completa per la musica.
Seguito dalla risposta di Synetech:
Frank ha spiegato bene la verifica specifica di Windows. Darò una risposta più generale.
- Cosa fa effettivamente Verifica disco dopo la masterizzazione per verificare i dati?
- Voglio dire, crea un hash del contenuto di origine e di destinazione, quindi li confronta? In tal caso, memorizza l'hash del contenuto masterizzato nella RAM? O lo salva in un file temporaneo sul disco rigido? Esiste un file di registro di ciò che sta accadendo?
Questo è certamente un modo in cui può essere implementato un confronto: hash un file (si spera con un algoritmo sufficientemente grande - leggi con basse probabilità di collisione), ripeti per l'altro e confronta gli hash. Se è così che viene implementata una verifica, sarai in grado di vedere il LED dell'unità lampeggiare per un po ', quindi il LED CD / DVD lampeggiare per un po'.
Un altro modo per implementare la verifica è leggere un blocco di un file, quindi lo stesso blocco dall'altro file, confrontarli, quindi ripetere fino a raggiungere la fine del file. In questo caso, vedrai i LED delle due unità alternarsi avanti e indietro.
Ovviamente, se il disco rigido e l'unità ottica non hanno LED, non sarà così ovvio. Ma puoi ancora vederlo con qualcosa come ProcessMonitor perché registrerà una serie di letture da una, quindi dall'altra in una singola, grande raffica o alternata, piccole raffiche.
- Immagino sia una sorta di confronto tra i file originali e i file che sono stati masterizzati sul disco, ma qualcuno sa come è fatto veramente a basso livello?
In realtà, tutto ciò che fa è svuotare la cache dell'unità in modo che la funzione di confronto legga i dati dal disco effettivo anziché dalla cache di memoria. Ovviamente questo è un passaggio fondamentale perché se la verifica viene eseguita dalla cache, allora non rappresenta ciò che è effettivamente sul disco, quindi la corruzione può facilmente passare attraverso.
Puoi vedere se un confronto viene eseguito dall'unità o dalla cache nella RAM in base alla velocità con cui si verifica. Se fai manualmente un semplice confronto (cioè con WinDiff, WinMerge, o eseguendo l'hashing con uno strumento di hashing), noterai che il confronto avviene molto più velocemente del previsto perché sta leggendo i file dalla cache di memoria. È necessario svuotare la cache per forzare la lettura dal disco effettivo. Per le unità ottiche (e altri supporti rimovibili come le unità flash e le schede di memoria), è sufficiente espellere semplicemente l'unità per svuotare la cache, ma per i dischi rigidi non è così semplice (sebbene di solito non sia importante perché il la nuova copia è quella che vuoi testare).
Hai qualcosa da aggiungere alla spiegazione? Audio disattivato nei commenti. Vuoi leggere altre risposte da altri utenti esperti di tecnologia Stack Exchange? Dai un'occhiata al thread di discussione completo qui .