"Tarkista levy" -ominaisuus on hyvä varmistaa, että juuri poltettu levy on kunnossa, mutta miten se toimii? Tänään SuperUser Q & A -postilla on vastaus utelias lukijan kysymykseen.
Tämän päivän kysymys- ja vastausistunto tulee meihin SuperUserin hyväksi - Stack Exchangein alaosasto, joka on yhteisöllinen Q & A-sivustojen ryhmittely.
Kuva courtesy of cobalt123 (Flickr).
SuperUser-lukija user1301428 haluaa tietää, miten levyjä tarkistetaan niiden polttamisen jälkeen:
Mitä tarkistaa levy polttamisen jälkeen tosiasiallisesti tarkistaa tiedot? Kuvittelen, että se on jonkinlainen vertailu alkuperäisten tiedostojen ja tiedostojen välillä, jotka on poltettu levylle, mutta ei kukaan tiedä, miten se todella tehdään alhaisella tasolla?
Tarkoitan, onko se luo lähde- ja kohdesisällön hash, sitten vertaa niitä? Jos on, tallentaa poltetun sisällön hash-muistin RAM-muistissa? Tai tallentaa sen väliaikaiseen tiedostoon kiintolevyltä? Onko lokitiedosto, mitä tapahtuu?
Vain utelias tietää tarkalleen, kuinka tämä ominaisuus toimii. Ja viittaan Windows Image Burner -ohjelmaan.
Miten levyjen vahvistusprosessi toimii?
SuperUser-avustajat Frank Thomas ja Synetech ovat meille vastauksemme. Ensin ylös, Frank Thomas:
Tarkista nämä MSDN-sivut Windows API: ssä IBurnVerification-rajapinnalle ja IMAPI_BURN_VERIFICATION_LEVEL-arvolle.
Tietolevyille näyttää nopealta tilalta, ettei koko levyä ole tarkistussumma, vain valikoima aloja. Sen jälkeen varmistetaan, että API kutsuu READ_DISC_INFO ja READ_TRACK_INFO onnistumaan uutta levyä vastaan.
Täydellistä tarkistusta varten se suorittaa yllä olevat tarkistukset ja suorittaa täyden tarkistusmäärän uudelta levyltä viimeisimmästä istunnosta muistiin tallennetun tarkistussumman osalta. Tarkistussummat on tallennettava muistiin, mutta ne ovat todennäköisesti lyhytikäisiä arvoja. Huomaa, että vertailu on RAM-levyn kuvaa vastaan, ei itse lähdemediaa, joten jos lähdetiedot eivät ole lukeneet oikein, se kirjoitetaan väärin. Vahvistus ei tunnista tätä.
Musiikkilevyjen kohdalla se keskittyy tarkistamaan READ_TRACK_INFO ja levyjen sisällysluettelon, mutta ei suorita tarkistussummamääritystä. Musiikin täydellistä vahvistustapaa ei ole.
Seuraa Synetechin vastaus:
Frank selitti hienosti Windows-spesifisen vahvistuksen. Annan yleisemman vastauksen.
- Mitä tarkistaa levylle polttamisen jälkeen tarkistaa tiedot?
- Tarkoitan, onko se luo lähde- ja kohdesisällön hash, sitten vertaa niitä? Jos on, tallentaa poltetun sisällön hash-muistin RAM-muistissa? Tai tallentaa sen väliaikaiseen tiedostoon kiintolevyltä? Onko lokitiedosto, mitä tapahtuu?
Tämä on varmasti yksi tapa vertailu voidaan toteuttaa: hajauttaa yksi tiedosto (toivottavasti riittävän suurella lukemalla alhainen mahdollisuudet törmäysalgoritmille), toista toiselle ja vertailla hashkoja. Jos näin varmistetaan, voit nähdä aseman LED-salaman hetkeksi ja sitten CD / DVD-LED vilkkua jonkin aikaa.
Toinen tapa toteuttaa tarkastus on lukea yhden tiedoston lohko, sitten sama lohko toisesta tiedostosta, verrata niitä ja toistaa, kunnes tiedoston loppu on saavutettu. Tässä tapauksessa näet kahden taajuusmuuttajan LEDit vuorotellen edestakaisin.
Tietenkin, jos kiintolevyllä ja optisella asemalla ei ole LED-merkkejä, niin se ei ole yhtä ilmeinen. Mutta voit silti nähdä sen prosessin muistilla, koska se kirjaa sarjan lukuja yhdestä, sitten toisesta joko yhdestä suuresta purskeesta tai vaihtuvista pienistä purskeista.
- Kuvittelen, että se on jonkinlainen vertailu alkuperäisten tiedostojen ja tiedostojen välillä, jotka on poltettu levylle, mutta ei kukaan tiedä, miten se todella tehdään alhaisella tasolla?
Oikeastaan kaikki se todella on huuhdella ajaa välimuisti niin, että vertailutoiminto on lukea tiedot varsinaisesta levystä eikä muistin välimuistista. On selvää, että tämä on kriittinen askel, koska jos tarkistus suoritetaan välimuistista, se ei tarkoita, mitä levyllä on, joten korruptio voi helposti siirtyä.
Voit tarkistaa, suoritetaanko vertailu taajuusmuuttajasta tai RAM-muistista välimuistista sen mukaan, kuinka nopeasti se tapahtuu. Jos manuaalisesti tehdään yksinkertainen vertailu (WinDiff, WinMerge tai hajauttamalla ne hajautustyökalulla), huomaat, että vertailu tapahtuu paljon odotettua nopeammin, koska se lukee tiedostot muistikeskuksesta. Sinun on huuhdeltava välimuisti, jotta se pakotetaan lukemaan todellinen levy. Jos optiset asemat (ja muut siirrettävät tietovälineet, kuten flash-asemat ja muistikortit), yksinkertaisesti poistaminen asemasta riittää huuhtelemaan välimuistia, mutta kiintolevyille se ei ole läheskään yhtä helppoa (vaikka yleensä sillä ei ole väliä, koska uusi kopio on se, jonka haluat testata).
Onko jokin asia lisättävä selitykseen? Kuulkaa kommentit. Haluatko lukea lisää vastauksia muilta tech-tajuilta Stack Exchange-käyttäjiltä? Katso koko keskusteluketju täältä.