6

Я предполагаю, что это какое-то сравнение между оригинальными файлами и файлами, которые были записаны на диск, но кто-нибудь знает, как это действительно делается на низком уровне?

Я имею в виду, создает ли он хэш исходного и конечного контента, а затем сравнивает их? Если это так, хранится ли в оперативной памяти хэш записанного содержимого? Или он сохраняет его во временном файле на жестком диске? Есть ли файл журнала о том, что происходит?

Просто интересно узнать, как именно работает эта функция :) И я имею в виду Windows Image Burner.

2 ответа2

12

Просмотрите эти страницы MSDN в Windows API для интерфейса IBurnVerification и перечисления IMAPI_BURN_VERIFICATION_LEVEL .

Для дисков с данными в быстром режиме это выглядит не как контрольная сумма всего диска, а только выборка секторов. Затем он гарантирует, что вызовы API READ_DISC_INFO и READ_TRACK_INFO успешно с новым диском.

Для полной проверки он выполняет вышеупомянутые проверки, а затем выполняет полную контрольную сумму в последней сессии на новом диске против контрольной суммы, вычисленной для записываемого потока памяти. Контрольные суммы должны храниться в оперативной памяти, но они, скорее всего, недолговечные значения. Обратите внимание, что сравнение выполняется с образом диска в ОЗУ, а не с самим носителем, поэтому, если исходные данные не были прочитаны правильно, они будут записаны неправильно. Проверка не обнаружит это.

Для музыкальных дисков он сосредоточен на проверке READ_TRACK_INFO и оглавления диска, но не выполняет вычисление контрольной суммы. Для музыки нет режима полной проверки.

6

Фрэнк красиво объяснил проверку Windows. Я дам более общий ответ.

Что делает Проверка диска после записи на самом деле для проверки данных?

Я имею в виду, создает ли он хэш исходного и конечного контента, а затем сравнивает их? Если это так, хранится ли в оперативной памяти хэш записанного содержимого? Или он сохраняет его во временном файле на жестком диске? Есть ли файл журнала о том, что происходит?

Это, безусловно, один из способов проведения сравнения: хэшируйте один файл (возможно, с достаточно большим - считайте алгоритм с малой вероятностью коллизий), повторите для другого и сравните хэши. Если так осуществляется проверка, то вы сможете некоторое время видеть светодиодный индикатор накопителя, затем светодиодный индикатор CD/DVD некоторое время мигает.

Другой способ реализовать проверку состоит в том, чтобы прочитать блок одного файла, затем тот же блок из другого файла, сравнить их, затем повторять до тех пор, пока не будет достигнут конец файла. В этом случае вы увидите, что светодиоды двух приводов чередуются вперед и назад.

Конечно, если на жестком диске и оптическом приводе нет светодиодов, то это будет не так очевидно, но вы все равно можете увидеть это с помощью чего-то вроде ProcessMonitor, поскольку он будет регистрировать серию чтений с одного, а затем другие либо в виде одного единственного большого всплеска, либо чередующихся небольших всплесков.

Я предполагаю, что это какое-то сравнение между оригинальными файлами и файлами, которые были записаны на диск, но кто-нибудь знает, как это действительно делается на низком уровне?

На самом деле все, что он делает, - это очищает кэш накопителя, чтобы функция сравнения считывала данные с реального диска, а не из кеша памяти. Очевидно, что это очень важный шаг, потому что если проверка выполняется из кеша, то она не отражает то, что на самом деле находится на диске, поэтому повреждение может легко проскользнуть.

Вы можете видеть, выполняется ли сравнение с накопителя или из кеша в ОЗУ, насколько быстро это происходит. Если вы вручную выполните простое сравнение (например, с помощью WinDiff или WinMerge или путем хеширования их с помощью инструмента хеширования), вы заметите, что сравнение происходит намного быстрее, чем ожидалось, поскольку оно считывает файлы из кэша памяти. Вы должны очистить кэш, чтобы заставить его читать с реального диска. Для оптических приводов (и других съемных носителей, таких как флэш-накопители и карты памяти) достаточно просто извлечь диск, чтобы очистить кэш, но для жестких дисков это не так просто (хотя обычно это не имеет значения, потому что новая копия - это та, которую вы хотите проверить).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .