If-Koubou

Ce face "Verificați discul" de fapt după ardere pentru a verifica datele?

Ce face "Verificați discul" de fapt după ardere pentru a verifica datele? (Cum să)

Caracteristica "Verificați discul" este excelentă pentru a vă asigura că discul proaspăt ars bine, dar cum funcționează exact? Postarea de astăzi SuperUser Q & A are răspunsul la o întrebare curioasă a cititorului.

Sesiunea de întrebări și răspunsuri din ziua de astăzi vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare bazată pe comunitate a site-urilor Q & A.

Fotografie curtoazie de cobalt123 (Flickr).

Intrebarea

Utilizatorul cititorului de SuperUser1301428 dorește să știe cum sunt verificate discurile după ce sunt arse:

Ce verifică dacă discul după ardere face, de fapt, pentru a verifica datele? Îmi imaginez că este un fel de comparație între fișierele originale și fișierele care au fost arse pe disc, dar știe cineva cum se face într-adevăr la un nivel scăzut?

Adică, creează un hash al conținutului sursă și al destinației, apoi le compară? Dacă da, stochează conținutul ars din RAM? Sau o salvează într-un fișier temporar de pe hard disk? Există un fișier de jurnal pentru ceea ce se întâmplă?

Doar curios să știu exact cum funcționează această caracteristică. Și mă refer la Windows Image Burner.

Cum funcționează procesul de verificare a discurilor?

Răspunsul

Utilizatorii super-utilizator Frank Thomas și Synetech au răspunsul pentru noi. În primul rând, Frank Thomas:

Consultați aceste pagini MSDN pe ferestrele API pentru interfața IBurnVerification și enumul IMAPI_BURN_VERIFICATION_LEVEL.

Pentru discurile de date, se pare că în modul rapid nu se controlează întregul disc, doar o selecție de sectoare. Apoi, asigură că API-ul solicită READ_DISC_INFO și READ_TRACK_INFO să reușească împotriva noului disc.

Pentru o verificare completă, efectuează verificările de mai sus, apoi efectuează o sumă completă de verificare a ultimei sesiuni de pe noul disc față de o sumă de control calculată pe fluxul de memorie care este ars. Sumele de control trebuie să fie stocate în ram, dar sunt probabil valori scurte. Rețineți că comparația este împotriva imaginii discului în memoria RAM, nu a mediului în sine, deci dacă datele sursă nu au citit corect, acesta va fi scris în mod incorect. Verificarea nu va detecta acest lucru.

Pentru discurile muzicale, se concentrează pe verificarea READ_TRACK_INFO și a discului de conținut disc, dar nu efectuează un calcul al sumelor de control. Nu există niciun mod complet de verificare pentru muzică.

Urmat de răspunsul de la Synetech:

Frank a explicat frumos verificarea specifică Windows. Voi da un răspuns mai general.

  • Ce face Verificați discul după ardere, de fapt, pentru a verifica datele?
  • Adică, creează un hash al conținutului sursă și al destinației, apoi le compară? Dacă da, stochează conținutul ars din RAM? Sau o salvează într-un fișier temporar de pe hard disk? Există un fișier de jurnal pentru ceea ce se întâmplă?

Aceasta este cu siguranță o metodă în care o comparație poate fi implementată: un fișier hash (sperăm că există o șansă suficient de mare pentru a citi algoritmul de coliziune), repetați pentru celălalt și comparați hashes. Dacă aceasta este modul în care este implementată o verificare, atunci veți putea vedea blițul cu LED-uri pentru o vreme, apoi LED-ul CD / DVD-ului clipește o clipă.

O altă modalitate de a implementa verificarea este citirea unui bloc dintr-un fișier, apoi același bloc din celălalt fișier, compararea acestora, apoi repetarea până la sfârșitul fișierului. În acest caz, veți vedea LED-urile celor două unități alternând înainte și înapoi.

Desigur, dacă unitatea hard disk și unitatea optică nu au LED-uri, atunci nu va fi la fel de evidentă. Dar puteți să-l vedeți în continuare cu ceva asemănător cu ProcessMonitor, deoarece va înregistra o serie de citiri de la unul la altul, apoi celălalt, fie într-o explozie unică, mare, sau alternantă, mică.

  • Îmi imaginez că este un fel de comparație între fișierele originale și fișierele care au fost arse pe disc, dar știe cineva cum se face într-adevăr la un nivel scăzut?

De fapt, tot ceea ce face cu adevărat este să ștergeți cache-ul unității, astfel încât funcția de comparație să citească datele de pe discul actual în loc de memoria cache-ului de memorie. Evident, aceasta este o etapă critică deoarece, dacă verificarea se face din cache, atunci nu reprezintă ceea ce este de fapt pe disc, astfel încât corupția poate ușor să alunece.

Puteți vedea dacă o comparație se face de la unitate sau din memoria cache în memoria RAM cu cât de rapid se produce. Dacă faceți manual o simplă comparație (adică cu WinDiff, WinMerge sau prin hashing-ul acestora cu un instrument hashing), veți observa că comparația se întâmplă mult mai repede decât se aștepta, deoarece citește fișierele din cache-ul de memorie. Trebuie să spălați memoria cache pentru al forța să citească de pe discul real. Pentru unitățile optice (și alte medii amovibile cum ar fi unități flash și carduri de memorie), pur și simplu scoaterea unității este suficientă pentru a spăla memoria cache, dar pentru hard-discuri, nu este aproape la fel de simplă (deși, de obicei, copia nouă este cea pe care doriți să o testați).

Aveți ceva de adăugat la explicație? Sunați în comentarii. Doriți să citiți mai multe răspunsuri de la alți utilizatori de tehnologie Stack Exchange? Check out discuția completă aici.