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

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

End LBA в HDD [D7, WinXP]


kernel ©   (2007-09-06 16:15:00) 

Здравствуйте, уважаемые!
Как можно получить конечныйLBA жесткого диска? Пробовал переводить из CHS => LBA: Пользую DeviceIoControl для вычисления кол-ва цилиндров, для получения всего остального заполняю TIdSector. Перевожу по формуле

LBA = ((cylinder * heads_per_cylinder + heads ) * sectors_per_track)+ sector – 1

, где вместо heads_per_cylinderпишу (heads / cylinder), на место sectorставлю последний сектор

но ничего не выходит - вычисление происходит неверно :(

Что делать?


kernel   (2007-10-21 14:20:00) [1]

А "стандартного" метода нет? :)


Anatoly Podgoretsky   (2007-10-21 12:04:00) [2]

> kernel  (21.10.2007 08:28:14)  [14]

DOS апи, INT 21
По крайней мере начиная со второй версии.


kernel   (2007-10-21 08:28:00) [3]


> АПИ практически изначально поддерживал два вида адресации
> - абсолютную (где сектора считались последовательно с 0
> и до конца) и псевдо-аппаратную (HTS).

Что-то я ничего не понимаю :)
Какой АПИ? Где его взять?


Anatoly Podgoretsky   (2007-10-20 22:43:00) [4]

АПИ практически изначально поддерживал два вида адресации - абсолютную (где сектора считались последовательно с 0 и до конца) и псевдо-аппаратную (HTS).


Anatoly Podgoretsky   (2007-10-20 22:41:00) [5]

> DrPass  (20.10.2007 22:35:11)  [11]

В можно сказать наоборот, это истинная, а головки, дорожки, сектора виртуальная, кроме случая старинных винчестеров 80 годов.


DrPass   (2007-10-20 22:35:00) [6]


> Так и не разобрался с определением этого LBA

Подозреваю, что единственный способ - спросить у жесткого диска, как это делает BIOS. Т.к. LBA - это всего лишь виртуальная адресация, и ни по каким формулам она не вычисляется.


kernel   (2007-10-20 18:10:00) [7]

Так и не разобрался с определением этого LBA :(
Может быть вариант umbra ©   (06.09.07 17:32) [3]подходит, но у меня неверно определяется кол-во секторов?


Anatoly Podgoretsky   (2007-09-06 20:30:00) [8]

> kernel  (06.09.2007 18:21:08)  [8]

Я уже не помню API, вроде есть функции получения информации об LBA


kernel   (2007-09-06 18:21:00) [9]


> Не надо пытаться работать с секторам, головками - это только
> для совместимости с ДОС, после определенного размера диска
> они вообще не имеют смысла

А каким образом еще можно получить LBA? :)
Я только про перевод chs->lba слышал...


Anatoly Podgoretsky   (2007-09-06 18:03:00) [10]

> kernel  (06.09.2007 17:54:06)  [6]

Не надо пытаться работать с секторам, головками - это только для совместимости с ДОС, после определенного размера диска они вообще не имеют смысла


kernel   (2007-09-06 17:54:00) [11]

mhdd, hddscan etc. :)


umbra   (2007-09-06 17:48:00) [12]

а откуда Вы знаете ТО число?


kernel   (2007-09-06 17:47:00) [13]


> Там разная адресация. Цилиндры от CHS к LBA не проходят.
>  Можешь в BIOS посмотреть.

Хм...

Слишком много кода накрутить потребуется :/


> количество секторов на винчестере - 1


получается число ближе к lba, но все_равно не то... :(


umbra   (2007-09-06 17:32:00) [14]


> Как можно получить конечный LBA жесткого диска

количество секторов на винчестере - 1


tesseract   (2007-09-06 17:11:00) [15]


> А кто такой LBA ? Максимальный валидный адрес ?


Logic block adress для HDD.


> Пробовал переводить из CHS => LBA


Там разная адресация. Цилиндры от CHS к LBA не проходят. Можешь в BIOS посмотреть.


Riply   (2007-09-06 17:01:00) [16]

>[0] kernel ©   (06.09.07 16:15)
А кто такой LBA ? Максимальный валидный адрес ?
>но ничего не выходит - вычисление происходит неверно :(
А что получается и почему "неверно" ?


Наверх

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