Показать сообщение отдельно
  #3  
Старый 20.01.2011, 15:49
Feodor Feodor вне форума
Прохожий
 
Регистрация: 19.01.2011
Сообщения: 24
Репутация: 10
По умолчанию PC-3000 Disk Analyzer

ТЕКСТ ИЗ ХЕЛПА PC-3000 Disk Analyzer (Как и что из этого можно реализовать на Delphi?) Хотелось бы подробнее о чтении\записи конкретного сектора.
Для того чтобы выполнить тестирование и ремонт и восстановление информации с дисковых устройств, необходимо иметь максимально полный доступ к аппаратным возможностям носителя информации, т.е. доступ к портам и регистрам. Иными словами, применительно к жестким дискам, крайне желательно иметь возможность подать на него любую команду, посмотреть значение регистров, подать при необходимости сброс. К сожалению операционная система Windows не предоставляет для этого прикладной программе какого-либо стандартного механизма.

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

Для доступа к дисковому устройству приложение PC-3000 Disk Analizer использует несколько программных механизмов

SCSI Pass Through IOCTL (SPTI)

S.M.A.R.T. IOCTL

IDE Pass Through IOCTL

SCSI ATA Translation

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

SCSI Pass Through IOCTL (SPTI)
По сути является системных механизмом выполнения операций чтения записи. Поэтому операции чтения, записи о частично верификации работают всегда, с любым типом хранилища данных и в любом программно аппаратном окружении. Единственным обнаруженным исключением является исполнение верификации для USB FLASH накопителей (Судя по всему на них верификация ничего не выполняет и всегда возвращает успех). Кроме чтения записи SPTI всегда позволяет получить некоторую информацию об идентификации диска, так называемый SCSI паспорт, который также используется операционной системой для идентификации дисковых накопителей и получения их доступной емкости. Применительно к накопителям подключенным к шине SCSI это означает так же возможность подать любую аппаратную команду, т.е. полный доступ к диску. К сожалению, почти для всех остальных накопителей действует ограничение: чтение/запись + идентификация.

S.M.A.R.T. IOCTL
Данная возможность предназначена для получения информации о состоянии S.M.A.R.T. (Self-monitoring, analysis, and reporting technology) для накопителей с интерфейсом IDE (PATA/SATA). Данный механизм допускает подачу команд чтения атрибутов и пороговых значений S.M.A.R.T., а также идентификационных данных HDD (Стандартный паспорт ATA) через задание значений регистров HDD. К сожалению, операционная система содержит очень жесткое ограничение на значение регистра команд. Разрешены только команды 0xB0 (S.M.A.R.T.) и 0xEC (HDD Id). Плюс ограничения на значение регистра +1 для команды 0xB0. К тому же довольно часто сторонний драйвер контроллера HDD не содержит реализации функций доступа к S.M.A.R.T.

IDE Pass Through IOCTL
Данная возможность, к сожалению, является недокументированной и также имеет очень существенные ограниченные. Для IDE Pass Through нет ограничения на значение регистра +1, что позволяет использовать большее количество функций S.M.A.R.T., включая доступ к логам и запуск S.M.A.R.T. диагностики HDD, но вероятность того, что эти функции будут доступны еще ниже.

SCSI ATA Translation
Чрезвычайно интересная возможность работы с жестким диском. В её основе управление IDE (ATA) HDD посредством SCSI команд. Основное применение SCSI ATA Translation - работа с HDD имеющими интерфейс USB. Все это относится только к HDD, имеющим интерфейс USB в качестве основного и как правило единственного интерфейса. Видимо такой доступ используется самими производителями HDD в процессе их производства. Для таких HDD практически отсутствуют ограничения операционной системы на подаваемые команды, поскольку механизм SPTI позволяет подать любую SCSI команду. Драйвер USB хоста стандартно передает эти команды по шине USB. Таким образом единственное возможное ограничение - сам HDD, т.е. наличие или отсутствие в его интерфейсе поддержки SCSI ATA Translation. HDD Western Digital и Toshiba такую поддержку реализуют, Samsung - нет. По остальным производителям информация пока отсутствует. Поддержка SCSI ATA Translation сама по себе является не тривиальной задачей. Включение поддержки данного механизма в интерфейс USB HDD видимо является вынужденной мерой, необходимость которой обусловлена задачами производства и заводского тестирования HDD. Поскольку при использовании USB-ATA переходников такой необходимости нет, то нет и поддержки механизма SCSI ATA Translation. Также данный механизм не может быть использован при доступе к HDD подключенным к IDE/ATA контроллерам на шине PCI.
Ответить с цитированием