Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Внутренняя конфигурация HDD [D5, WinXP]


Dimaxx ©   (2007-06-18 11:08:00) 

Сабж. Кто про что, а я про прямой доступ.

Мне нужно получить внутреннюю конфигурацию винта, а именно C/H/S. Через DeviceIOControl не катит, ибо возвращается не то. У меня есть старенький винт. Я точно знаю, что его внутренняя конфа 3298/16/63, а DeviceIOControl возвращает 824/64/63, что не есть гут. Порылся в инете - есть тока под Линукс на Сях, либо просто объясняется организация HDD.

Как это сделать? Скорее всего нужно напрямую обращаться к контроллеру...


Dimaxx   (2007-06-20 10:16:00) [1]

Ну считай дальше что невозможно. Невозможно сделать, если сидеть и глядя в потолок рассуждать об этом. Я уже все сделал и получил ID sector... Да, у современных винтов одна и та же конфа 16383/16/63 (и я это знал), а мне пока нужны старые винты - у них как раз то что надо.

Тема закрыта...


AndreyRus   (2007-06-20 03:12:00) [2]

Даже у него с очень большой долей вероятности количество дорожек, секторов и головок(CHS) не соответствует физическому. Тебе известно, что такое транслятор? Так вот он есть даже в твоем старом винте. Забудь о программном определении физической конфигурации CHS жесткого диска. Это невозможно.


Dimaxx   (2007-06-19 20:41:00) [3]


> CHS был отменен в ATA/ATAPI-6.

Да чего ты привязался к отмене? Ты первый мой пост читал? Я тебя про 500Гб винт что ли спрашивал? У меня старый винт 1,7Гб, вот с него-то мне и надо читать данные. Я его взял для экспериментов. А получение конфы так, для расширения кругозора начал копать.


Anatoly Podgoretsky   (2007-06-19 19:24:00) [4]

> AndreyRus  (19.06.2007 18:09:11)  [11]

А что еще оставалось делать, с большими винчестерами, работать с только с первыми 2 гб? CHS потихоньку постоянно расширяли, пока не полностью не уперлись в выделеные регистры.

Изначально было 1024 цилиндра, 16 головок и 63 сектора.


AndreyRus   (2007-06-19 18:09:00) [5]


> Свободен! Не знаешь - не пиши... :)

Ура! Я свободен!
CHS был отменен в ATA/ATAPI-6.
См. - http://www.smarthdd.com/rus/ata_history.htm


Dimaxx   (2007-06-19 17:40:00) [6]


> Никак.

Свободен! Не знаешь - не пиши... :)

Через порты можно. Адреса портов стандартные, либо впишу ручками.

Есть команда $EC - идентификация накопителя. Она заставляет накопитель выдать инфу о себе - там все есть. Нашел драйвер (причем с сырцами) - с помощью недокументированных команд он разблокирует порты под NT и с ними можно работать свободно в Дельфе. Если кто в Сях волокет - мож разберетесь как можно эти недокументированные команды заюзать прямо в приложении.


Anatoly Podgoretsky   (2007-06-19 15:26:00) [7]

> Dimaxx  (19.06.2007 14:30:07)  [7]

В БИОСе, но это мало что даст, эта информация для ДОС программ в основном.


AndreyRus   (2007-06-19 14:37:00) [8]


> Я не спрашиваю что это, я спрашиваю как получить.

Никак.


Dimaxx   (2007-06-19 14:30:00) [9]

Я не спрашиваю что это, я спрашиваю как получить. Мне это нужно для работы.


AndreyRus   (2007-06-19 13:06:00) [10]

CHS для hdd - атавизм.


Dimaxx   (2007-06-18 17:49:00) [11]

Так я и говорю - определяется через DeviceIOControl, но не так. В итоге объем виден правильно, но конфа неверная.


Игорь Шевченко   (2007-06-18 15:14:00) [12]

Dimaxx ©   (18.06.07 13:23) [3]

Чудес нет - если что-то определяется, значит оно определяется в массе случаев через DeviceIOControl. Можно и к контроллеру обратиться, но это драйвер нужен, чтобы по портам лазить и со стандартным драйвером контроллера не пересечься.


Dimaxx   (2007-06-18 13:23:00) [13]


> Тебе сюда http://home.earthlink.net/~akonshin/delphi_ru.htm

Все это есть, но определяется конфа только у современных винтов. Для подобных моему функция получения этих параметров выдает ошибку "Устройство не подключено", хотя модель, серийник получает нормально. Дело в том, что у меня контроллер IDE реализован не средствами чипсета (JMicron). Поэтому и спрашиваю - мож напрямую к контроллеру обратиться? Но надо сначала получить адрес порта.

Можно канеш в моем случае привести конфу с 64 головок к 16 умножив на 4 кол-во дорожек, но получится 3296, а не 3298. Хотя, думаю, плюс-минус дорожка не особо страшно. Инфа эта не особо нужна, но все-таки желательно ее иметь для дальнейшей работы. Причем определять ее желательно динамически и независимо от конфы самой машины.


> Уверен? Это адресация как LBA или CHS? винде в общем то
> до фонаря, что у тебя в BIOS прописано.

Уверен. Ибо знаю конфу этого винта. Адресация именно CHS (винт 1,7Гб) и это инфа из контроллера винта.


Игорь Шевченко   (2007-06-18 11:32:00) [14]

Тебе сюда http://home.earthlink.net/~akonshin/delphi_ru.htm


tesseract   (2007-06-18 11:29:00) [15]


> Мне нужно получить внутреннюю конфигурацию винта, а именно
> C/H/S
>Я точно знаю, что его внутренняя конфа


Уверен ? Это адресация как LBA или CHS ? винде в общем то до фонаря, что у тебя в BIOS прописано.


Наверх

Титульная страница Поиск, карта сайта Написать письмо