!Исправил глюк в SMART с отрицательными температурами, который был внесён в процессе экспериментов.
!Исправлена ошибка перепроверки блока после «Erase if error». Появилась она давно, в результате адаптации к Windows 10 — были ограничены некоторые права на доступ к диску. Теперь верификация заменена на чтение, т.к. чтению нужно меньше прав — и всё заработало нормально.
Сделано выключение кеша записи перед ремапом, для минимизации ложных результатов проверки после него.
В сигнатуру-заполнитель при ремапе теперь добавлен номер текущего LBA, в виде строки LBA xxxxxxxx, размещаемой в вылеченном секторе по смещению 0.
В заполнитель секторов блока при «Erase if error» теперь добавлена запись номера LBA в виде строки LBA xxxxxxxx, а также отметки времени в виде «Block erased текущая дата текущее время«. Обе вышеописанные функции отключаемы с помощью ключа в секции файла vcr40.ini:
[Scan]
Write signatures=0
!Сделал «тихую» запись vcr40.ini при завершении работы программы. Теперь на защищенных от записи носителях ошибка отсутствует. Всё это сделано для лучшей совместимости с Live CD.
При попытке произвести запись на накопитель со включенным MBR под Win 7 и выше, возникает системная ошибка 05h — «отказано в доступе». Теперь программа при появлении данной ошибки предлагает ознакомиться с FAQ #6,
http://hdd.by/victoria_faq
Добавлен детект HDD 3.5″ Toshiba HDWE как «истинных», не являющихся наследниками IBM/HGST. Для более точного отображения SMART на них.
При возникновении ошибки API «устройство больше не доступно» (это означает, что накопитель подвис на длительное время, и был отключен Windows как аварийный) — скан поверхности останавливается.
Теперь логи ведутся раздельно для каждого накопителя. В папке с логами (по умолчанию — LOGS/) создаются подпапки с названием модели и серийным номером каждого накопителя, а в них кладутся эвентлоги, паспорт, smart, графики, скриншоты, и тд. При этом «именные» логи дублируются в общий эвентлог. При первом запуске программы, когда паспорт накопителя еще не получен (и следовательно — неизвестно название модели), при неисправности накопителя, если он не отдаёт название — вся информация также поступает в общий эвентлог. Папка с «безымянными» скриншотами также перенесена в LOGS/. Функция раздельных логов отключается снятием галки «Separate logs» на вкладке Setup.
Дефекты скана поверхности теперь пишутся в отдельный лог. Создается каталог с названием модели и серийным номером, а в нём файл с именем вида «bads_название модели_серийный номер.txt«. При каждом запуске тестов — в этом файле фиксируется время запуска и все найденные дефекты. Файл текстовый, и каждый раз дописывается. Формат TXT-файла простой: В первую строку пишется заголовок «Victoria defects log 1.0«. Затем через произвольное количество пустых строк — строка с датой и временем вида «Start: 30.08.2019 17:16:52» (слово «Start» — обязательно). В последующих строках пишутся записи о диапазонах сканирования вида xxxx, yyy (где xxx — стартовый адрес, yyy — количество секторов). В строку могут добавляться произвольные комментарии, отделенные справа от чисел хотя-бы одним пробелом. Несколько идущих подряд строк образуют сессию. Пустая строка означает конец сессии.
Лог формата .vds используется в профессиональных программах, и отличается заголовком и форматом записей. Добавлен для совместимости.
В дальнейшем планируется использовать список как сценарий для перепроверки и лечения дефектов, найденных при предыдущих сканах или при неудачном лечении дефектов. Это позволит экономить время, проверяя лишь проблемные участки, и исключив скан всего диска.
Сделана возможность сканировать поверхность по списку дефектов (например, логу, созданному при предыдущем скане поверхности). Для этого на кнопке «Scan» появилось выпадающее меню. Программа анализирует список, находит в нём последнюю заполненную секцию, сообщает о том, какие номера строк будут использованы, меняет кнопку «Scan» на «Start script» и ждёт её нажатия. При работе по списку — выводится прогресс-бар его прохождения.
Добавлена работа со SMART-журналами HDD / SSD:
— Получение списка (оглавления) SMART-журналов, и разбор двух важнейших из них: Extended Comprehensive SMART Error log (список ошибок, возникших во время работы накопителя) и Ext SMART Selftest Log (список результатов самотестирования встроенными SMART-тестами). Оба журнала современные, 48-битные. Также сделан упрощённый разбор журнала Comprehensive SMART Error log старого образца — но смысла в нём пока не увидел. Если кому-то будут очень нужны эти журналы для старых накопителей — сделаю.
— Сделана генерация сценария со списком дефектов из смарт-журнала (аналогичного тому, что создаёт скан). Для быстрой автоматической проверки проблемных мест. Как показала практика, адреса надо брать с запасом на размер блока в начале. Что и было сделано. В дальнейшем надо бы добавить сортировку и удаление дубликатов адресов, но пока лень делать.
Примечание: Host-журналы поддерживают запись для хранения в них информации, устойчивой к низкоуровневому форматированию диска. Остальные — только для чтения (накопитель на попытку записи вернёт ошибку). В последующих версиях планирую добавить интерпретацию других журналов, если найду описание их структуры.
Для исследования журналов сделал HEX-просмотрщик и их чтение/запись в файлы и из файлов. Прямое редактирование пока не реализовано.
Сделана попытка вывести индикаторные лампочки через API. Скорей всего будет работать даже через некоторые USB-контроллеры, а также через стандартные ATA / AHCI каналы Windows. По-умолчанию отключено. Включить можно так:
[Setup]
API ATA Indicators=1
Теперь переключение теста записи на чтение происходит только при смене накопителя, а не по окончании тестов.
По окончании тестов с ремапом или стиранием — теперь выводится количество успешно вылеченных секторов.
Добавлена возможность указать альтернативный путь к каталогу для скриншотов в INI-файле. Для этого добавлен ключ такого вида:
[Setup]
ThirdPathSCR=’D:\Docs\YandexDisk\!ScreenShots\’
Путь может быть произвольным, оканчивающийся ‘\’. При пустой строке или отсутствии ключа — путь будет взят из настроек программы. При неправильном пути — файл не запишется и предупредит об этом в логе.
! Удалены переносы при копировании единичных строк в clipboard.
! Исправлены прочие мелкие ошибки и внесены улучшения в алгоритмы.