Funktionen "verifiera skiva" är utmärkt för att se till att din nybrända skiva blev bra, men hur fungerar den exakt? Dagens SuperUser Q & A-inlägg har svaret på en nyfiken läsares fråga.
Dagens Fråga & Svar-session kommer till oss med tillstånd av SuperUser - en underavdelning av Stack Exchange, en community-driven gruppering av Q & A-webbplatser.
Foto med tillstånd av cobalt123 (Flickr) .
Frågan
SuperUser-läsaren user1301428 vill veta hur skivor verifieras efter att de har bränts:
Vad gör verifieringsskiva efter bränning egentligen för att verifiera data? Jag antar att det är någon form av jämförelse mellan originalfilerna och filerna som har bränts på skivan, men vet någon hur det verkligen görs på låg nivå?
Jag menar, skapar den en hash av källans och destinationsinnehållet och jämför dem sedan? I så fall lagrar den hash för det brända innehållet i RAM? Eller sparar den det i en tillfällig fil på hårddisken? Finns det en loggfil över vad som händer?
Bara nyfiken på att veta exakt hur den här funktionen fungerar. Och jag hänvisar till Windows Image Burner.
Hur fungerar skivverifieringsprocessen?
Svaret
SuperUser-bidragsgivarna Frank Thomas och Synetech har svaret för oss. Först upp, Frank Thomas:
Kolla in dessa MSDN-sidor på Windows API för IBurnVerification gränssnitt och IMAPI_BURN_VERIFICATION_LEVEL enum.
För dataskivor ser det ut som om det i snabbläge inte kontrollerar hela skivan, utan bara ett urval av sektorer. Det ser sedan till att API-anropen READ_DISC_INFO och READ_TRACK_INFO lyckas mot den nya skivan.
För fullständig verifiering utför den ovanstående kontroller och gör sedan en fullständig kontrollsumma på den senaste sessionen på den nya skivan mot en kontrollsumma som beräknas på minnesströmmen som bränns. Kontrollsummen måste lagras i ram, men de är troligtvis kortlivade värden. Observera att jämförelsen är mot skivbilden i RAM, inte själva källmediet, så om källdata inte lästes korrekt kommer det att skrivas fel. Verifiering upptäcker inte detta.
För musikskivor fokuserar den på att kontrollera READ_TRACK_INFO och skivans innehållsförteckning, men gör ingen kontrollsumma. Det finns inget fullständigt verifieringsläge för musik.
Följt av svaret från Synetech:
Frank förklarade snyggt den Windows-specifika verifieringen. Jag kommer att ge ett mer generellt svar.
- Vad gör Verify-skiva efter bränning egentligen för att verifiera data?
- Jag menar, skapar den en hash av källans och destinationsinnehållet och jämför dem sedan? I så fall lagrar den hash för det brända innehållet i RAM? Eller sparar den det i en tillfällig fil på hårddisken? Finns det en loggfil över vad som händer?
Det är verkligen ett sätt en jämförelse kan genomföras: hash en fil (förhoppningsvis med tillräckligt stor - läs låg risk för kollisionsalgoritm), upprepa för den andra och jämför hash. Om det är så som en verifiering genomförs kommer du att kunna se driv-LED-blixt ett tag och sedan blinka CD / DVD-LED ett tag.
Ett annat sätt att genomföra verifieringen är att läsa ett block av en fil, sedan samma block från den andra filen, jämföra dem och sedan upprepa tills slutet av filen nås. I det här fallet ser du att lysdioderna på de två enheterna växlar fram och tillbaka.
Naturligtvis, om hårddisken och den optiska enheten inte har lysdioder, blir det inte lika uppenbart. Men du kan fortfarande se det med något som ProcessMonitor eftersom det loggar en serie läsningar från en, sedan den andra antingen i en enda, stor burst eller alternerande, små bursts.
- Jag antar att det är någon form av jämförelse mellan originalfilerna och filerna som har bränts på skivan, men vet någon hur det verkligen görs på låg nivå?
Egentligen är allt det verkligen gör att spola enhetens cache så att jämförelsefunktionen läser data från den faktiska skivan istället för från minnescachen. Uppenbarligen är detta ett kritiskt steg, för om verifieringen görs från cache, representerar den inte det som faktiskt finns på skivan, så korruption kan lätt glida igenom.
Du kan se om en jämförelse görs från enheten eller från cachen i RAM med hur snabbt det sker. Om du manuellt gör en enkel jämförelse (dvs. med WinDiff, WinMerge eller genom att haska dem med ett hashingverktyg) kommer du att märka att jämförelsen sker mycket snabbare än förväntat eftersom den läser filerna från minnescachen. Du måste spola cachen för att tvinga den att läsa från själva skivan. För optiska enheter (och andra flyttbara media som flash-enheter och minneskort) är det bara att mata ut enheten för att spola cachen, men för hårddiskar är det inte alls så enkelt (men vanligtvis spelar det ingen roll eftersom ny kopia är den du vill testa).
Har du något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa fler svar från andra tekniskt kunniga Stack Exchange-användare? Kolla in hela diskussionstråden här .