Laman » bagaimana untuk » Apakah 'Verify Disc' Sebenarnya Adakah Selepas Membakar untuk Mengesahkan Data?

    Apakah 'Verify Disc' Sebenarnya Adakah Selepas Membakar untuk Mengesahkan Data?

    Ciri 'cakera mengesahkan' hebat untuk memastikan cakera baru dibakar ternyata dengan baik, tetapi bagaimana sebenarnya ia berfungsi? Siaran Q & A SuperUser hari ini mempunyai jawapan kepada soalan pembaca yang ingin tahu.

    Sesi Soalan & Jawapan hari ini datang kepada kami dengan ihsan SuperUser-bahagian pembahagian Stack Exchange, kumpulan yang diketuai oleh komuniti laman web Q & A.

    Photo courtesy of cobalt123 (Flickr).

    Soalan

    Pengguna pembaca SuperUser1301428 mahu tahu bagaimana cakera disahkan setelah dibakar:

    Apa yang mengesahkan cakera selepas pembakaran sebenarnya dilakukan untuk mengesahkan data? Saya membayangkan ia adalah sejenis perbandingan antara fail asal dan fail yang telah dibakar pada cakera, tetapi adakah sesiapa tahu bagaimana ia benar-benar dilakukan pada tahap yang rendah?

    Maksud saya, adakah ia mencipta hash sumber dan kandungan destinasi, kemudian membandingkannya? Jika ya, adakah ia menyimpan hash kandungan terbakar dalam RAM? Atau adakah ia menyimpannya dalam fail sementara pada cakera keras? Adakah terdapat fail log apa yang berlaku?

    Hanya ingin tahu dengan tepat bagaimana ciri ini berfungsi. Dan saya merujuk kepada Windows Image Burner.

    Bagaimanakah proses pengesahan cakera berfungsi??

    Jawapan

    Penyumbang SuperUser Frank Thomas dan Synetech mempunyai jawapan untuk kami. Pertama, Frank Thomas:

    Lihat halaman MSDN ini pada API tingkap untuk antara muka IBurnVerification dan IMAPI_BURN_VERIFICATION_LEVEL enum.

    Untuk cakera data, ia kelihatan seperti dalam mod pantas ia tidak memeriksa keseluruhan cakera, hanya satu pilihan sektor. Ia kemudian memastikan bahawa API memanggil READ_DISC_INFO dan READ_TRACK_INFO berjaya melawan cakera baru.

    Untuk pengesahan penuh, ia melakukan pemeriksaan di atas, kemudian melakukan pemeriksaan penuh pada sesi terakhir pada cakera baru terhadap pemeriksaan yang dikira pada aliran memori yang dibakar. Checksums perlu disimpan dalam ram, tetapi mereka mungkin nilai hidup yang pendek. Ambil perhatian bahawa perbandingannya adalah terhadap imej cakera dalam RAM, bukan media sumber itu sendiri, jadi jika data sumber tidak dibaca dengan betul, ia akan ditulis secara tidak betul. Pengesahan tidak akan mengesan ini.

    Untuk cakera muzik, ia memfokuskan pada memeriksa READ_TRACK_INFO dan jadual cakera kandungan, tetapi tidak melakukan pengiraan checksum. Tiada mod pengesahan penuh untuk muzik.

    Diikuti oleh jawapan dari Synetech:

    Frank dengan jelas menjelaskan pengesahan khusus Windows. Saya akan memberikan jawapan yang lebih umum.

    • Apakah Verifikasi cakera selepas pembakaran sebenarnya lakukan untuk mengesahkan data?
    • Maksud saya, adakah ia mencipta hash sumber dan kandungan destinasi, kemudian membandingkannya? Jika ya, adakah ia menyimpan hash kandungan terbakar dalam RAM? Atau adakah ia menyimpannya dalam fail sementara pada cakera keras? Adakah terdapat fail log apa yang berlaku?

    Itu sudah pasti satu cara perbandingan boleh dilaksanakan: satu fail hash (mudah-mudahan dengan peluang yang cukup besar untuk membaca algoritma perlanggaran), ulangi yang lain, dan bandingkan hash. Jika itu adalah bagaimana pengesahan dilaksanakan, maka anda akan dapat melihat kilat pemacu LED untuk sementara waktu, maka flash CD / DVD-LED untuk seketika.

    Satu lagi cara untuk melaksanakan pengesahan adalah membaca satu blok satu fail, maka blok yang sama dari fail lain, bandingkannya, kemudian ulangi sehingga akhir fail tercapai. Dalam kes ini, anda akan melihat LED dari kedua-dua pemacu bertukar bolak-balik.

    Sudah tentu, jika pemacu keras dan pemacu optik tidak mempunyai LED, maka ia tidak akan begitu jelas. Tetapi anda masih boleh melihatnya dengan sesuatu seperti ProcessMonitor kerana ia akan mencatat siri bacaan dari satu, maka yang lain sama ada dalam pecah tunggal, besar atau berselang, pecah kecil.

    • Saya membayangkan ia adalah sejenis perbandingan antara fail asal dan fail yang telah dibakar pada cakera, tetapi adakah sesiapa tahu bagaimana ia benar-benar dilakukan pada tahap yang rendah?

    Sebenarnya, yang benar-benar adalah memindahkan cache pemacu supaya fungsi perbandingan membaca data dari cakera sebenar dan bukannya dari cache ingatan. Jelas sekali ini adalah langkah kritikal kerana jika pengesahan dilakukan dari cache, maka itu tidak mewakili apa yang sebenarnya pada disk, sehingga korupsi dapat dengan mudah melewati.

    Anda dapat melihat sama ada perbandingan dilakukan dari pemacu atau dari cache dalam RAM dengan seberapa cepat ia berlaku. Jika anda secara manual melakukan perbandingan yang mudah (iaitu dengan WinDiff, WinMerge, atau dengan hashing mereka dengan alat hashing), anda akan melihat bahawa perbandingan berlaku lebih cepat daripada yang diharapkan kerana ia membaca fail dari cache ingatan. Anda mesti menghidupkan cache untuk memaksanya untuk membaca dari cakera sebenar. Untuk pemacu optik (dan media boleh tanggal lain seperti pemacu kilat dan kad memori), hanya mengeluarkan cakera yang mencukupi untuk memadamkan cache, tetapi untuk cakera keras, ia tidak semudah yang mudah (walaupun biasanya itu tidak penting kerana Salinan baru adalah yang anda mahu ujian).


    Mempunyai sesuatu untuk menambah penjelasannya? Bunyi dalam komen. Ingin membaca lebih banyak jawapan dari pengguna Stack Exchange yang berteknologi tinggi? Lihat thread perbincangan penuh di sini.