Co właściwie robi Zweryfikuj płytę po wypaleniu w celu zweryfikowania danych?
Funkcja "Weryfikacja dysku" jest świetna, aby upewnić się, że świeżo nagrana płyta dobrze się sprawdziła, ale jak to działa? Dzisiejszy post z pytaniami i odpowiedziami dla SuperUser zawiera odpowiedź na ciekawe pytanie czytelnika.
Dzisiejsza sesja pytań i odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, opartego na społecznościach grupowania witryn z pytaniami i odpowiedziami.
Zdjęcie dzięki uprzejmości cobalt123 (Flickr).
Pytanie
Czytnik SuperUser user1301428 chce wiedzieć, w jaki sposób dyski są weryfikowane po wypaleniu:
Co sprawdza weryfikacja płyty po wypaleniu, aby sprawdzić dane? Wyobrażam sobie, że jest to pewnego rodzaju porównanie oryginalnych plików z plikami nagranymi na płycie, ale czy ktoś wie, jak to naprawdę jest zrobione na niskim poziomie??
Mam na myśli, czy tworzy on skrót zawartości źródłowej i docelowej, a następnie porównuje je? Jeśli tak, to czy zapisuje hasz spalonej zawartości w pamięci RAM? Czy może zapisać go w pliku tymczasowym na dysku twardym? Czy jest plik dziennika, co się dzieje?
Po prostu ciekawy, jak dokładnie działa ta funkcja. Mam na myśli Windows Image Burner.
Jak działa proces weryfikacji dysku?
Odpowiedź
Współautorzy SuperUser Frank Thomas i Synetech mają dla nas odpowiedź. Po pierwsze, Frank Thomas:
Sprawdź te strony MSDN w interfejsie API systemu Windows dla interfejsu IBurnVerification i enum IMAPI_BURN_VERIFICATION_LEVEL.
W przypadku dysków z danymi wygląda na to, że w trybie szybkim nie sprawdza sumy całego dysku, tylko wybranych sektorów. Następnie upewnia się, że API wywołuje READ_DISC_INFO i READ_TRACK_INFO, aby odnieść sukces na nowej płycie.
W celu pełnej weryfikacji wykonuje powyższe testy, a następnie wykonuje pełną sumę kontrolną ostatniej sesji na nowej płycie względem sumy kontrolnej obliczonej na nagrywanym strumieniu pamięci. Sumy kontrolne muszą być przechowywane w pamięci RAM, ale prawdopodobnie są to wartości krótkotrwałe. Należy zauważyć, że porównanie dotyczy obrazu dysku w pamięci RAM, a nie samego nośnika źródłowego, więc jeśli dane źródłowe nie zostały odczytane poprawnie, zostanie ono zapisane niepoprawnie. Weryfikacja tego nie wykryje.
W przypadku dysków muzycznych koncentruje się na sprawdzeniu READ_TRACK_INFO i zawartości dysku, ale nie wykonuje obliczenia sumy kontrolnej. Nie ma trybu pełnej weryfikacji muzyki.
Następnie odpowiedź od Synetech:
Frank ładnie wyjaśnił weryfikację specyficzną dla systemu Windows. Dam bardziej ogólną odpowiedź.
- Co robi weryfikacja dysku po wypaleniu w rzeczywistości, aby zweryfikować dane?
- Mam na myśli, czy tworzy on skrót zawartości źródłowej i docelowej, a następnie porównuje je? Jeśli tak, to czy zapisuje hasz spalonej zawartości w pamięci RAM? Czy może zapisać go w pliku tymczasowym na dysku twardym? Czy jest plik dziennika, co się dzieje?
Jest to z pewnością jeden ze sposobów, w jaki można zaimplementować porównanie: hasza jeden plik (miejmy nadzieję, z wystarczająco dużą szansą na małe prawdopodobieństwo algorytmu kolizji), powtórzyć dla drugiego i porównać hasze. Jeśli tak właśnie zaimplementowano weryfikację, przez chwilę będzie można zobaczyć flash LED napędu, a następnie dioda CD / DVD-LED będzie migać przez chwilę.
Innym sposobem wdrożenia weryfikacji jest odczytanie bloku jednego pliku, a następnie tego samego bloku z innego pliku, porównanie ich, a następnie powtarzanie aż do końca pliku. W takim przypadku widoczne będą diody LED obu napędów na przemian iz powrotem.
Oczywiście, jeśli dysk twardy i napęd optyczny nie mają diod LED, nie będzie to tak oczywiste. Ale nadal można go zobaczyć za pomocą czegoś takiego jak ProcessMonitor, ponieważ rejestruje on serię odczytów z jednego, a następnie drugiego w jednej, dużej serii lub na przemian, małych seriach.
- Wyobrażam sobie, że jest to pewnego rodzaju porównanie oryginalnych plików z plikami nagranymi na płycie, ale czy ktoś wie, jak to naprawdę jest zrobione na niskim poziomie??
Właściwie tak naprawdę jest tylko opróżnianie pamięci podręcznej dysku, aby funkcja porównania odczytywała dane z rzeczywistej płyty zamiast z pamięci podręcznej. Oczywiście jest to krok krytyczny, ponieważ jeśli weryfikacja odbywa się z pamięci podręcznej, to nie odzwierciedla to, co faktycznie znajduje się na dysku, więc korupcja może łatwo się przedostać.
Możesz sprawdzić, czy porównanie odbywa się z dysku lub z pamięci podręcznej w pamięci RAM, jak szybko występuje. Jeśli ręcznie dokonasz prostego porównania (tj. Z WinDiff, WinMerge lub zahaczysz je za pomocą narzędzia mieszającego), zauważysz, że porównanie odbywa się znacznie szybciej niż oczekiwano, ponieważ odczytuje pliki z pamięci podręcznej. Musisz wyczyścić pamięć podręczną, aby wymusić jej odczyt z rzeczywistej płyty. W przypadku napędów optycznych (i innych nośników wymiennych, takich jak dyski flash i karty pamięci), wystarczy wyrzucić dysk, aby opróżnić pamięć podręczną, ale w przypadku dysków twardych nie jest to prawie tak proste (choć zazwyczaj nie ma to znaczenia, ponieważ nowa kopia to ta, którą chcesz przetestować).
Czy masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych użytkowników Stack Exchange, którzy znają się na technologii? Sprawdź cały wątek dyskusji tutaj.