Форум: "WinAPI";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];
ВнизEnd LBA в HDD Найти похожие ветки
← →
kernel © (2007-09-06 16:15) [0]Здравствуйте, уважаемые!
Как можно получить конечный LBA жесткого диска? Пробовал переводить из CHS => LBA: Пользую DeviceIoControl для вычисления кол-ва цилиндров, для получения всего остального заполняю TIdSector. Перевожу по формулеLBA = ((cylinder * heads_per_cylinder + heads ) * sectors_per_track)+ sector – 1
, где вместо heads_per_cylinder пишу (heads / cylinder), на место sector ставлю последний сектор
но ничего не выходит - вычисление происходит неверно :(
Что делать?
← →
Riply © (2007-09-06 17:01) [1]>[0] kernel © (06.09.07 16:15)
А кто такой LBA ? Максимальный валидный адрес ?
>но ничего не выходит - вычисление происходит неверно :(
А что получается и почему "неверно" ?
← →
tesseract © (2007-09-06 17:11) [2]
> А кто такой LBA ? Максимальный валидный адрес ?
Logic block adress для HDD.
> Пробовал переводить из CHS => LBA
Там разная адресация. Цилиндры от CHS к LBA не проходят. Можешь в BIOS посмотреть.
← →
umbra © (2007-09-06 17:32) [3]
> Как можно получить конечный LBA жесткого диска
количество секторов на винчестере - 1
← →
kernel © (2007-09-06 17:47) [4]
> Там разная адресация. Цилиндры от CHS к LBA не проходят.
> Можешь в BIOS посмотреть.
Хм...
Слишком много кода накрутить потребуется :/
> количество секторов на винчестере - 1
получается число ближе к lba, но все_равно не то... :(
← →
umbra © (2007-09-06 17:48) [5]а откуда Вы знаете ТО число?
← →
kernel © (2007-09-06 17:54) [6]mhdd, hddscan etc. :)
← →
Anatoly Podgoretsky © (2007-09-06 18:03) [7]> kernel (06.09.2007 17:54:06) [6]
Не надо пытаться работать с секторам, головками - это только для совместимости с ДОС, после определенного размера диска они вообще не имеют смысла
← →
kernel © (2007-09-06 18:21) [8]
> Не надо пытаться работать с секторам, головками - это только
> для совместимости с ДОС, после определенного размера диска
> они вообще не имеют смысла
А каким образом еще можно получить LBA? :)
Я только про перевод chs->lba слышал...
← →
Anatoly Podgoretsky © (2007-09-06 20:30) [9]> kernel (06.09.2007 18:21:08) [8]
Я уже не помню API, вроде есть функции получения информации об LBA
← →
kernel © (2007-10-20 18:10) [10]Так и не разобрался с определением этого LBA :(
Может быть вариант umbra © (06.09.07 17:32) [3] подходит, но у меня неверно определяется кол-во секторов?
← →
DrPass © (2007-10-20 22:35) [11]
> Так и не разобрался с определением этого LBA
Подозреваю, что единственный способ - спросить у жесткого диска, как это делает BIOS. Т.к. LBA - это всего лишь виртуальная адресация, и ни по каким формулам она не вычисляется.
← →
Anatoly Podgoretsky © (2007-10-20 22:41) [12]> DrPass (20.10.2007 22:35:11) [11]
В можно сказать наоборот, это истинная, а головки, дорожки, сектора виртуальная, кроме случая старинных винчестеров 80 годов.
← →
Anatoly Podgoretsky © (2007-10-20 22:43) [13]АПИ практически изначально поддерживал два вида адресации - абсолютную (где сектора считались последовательно с 0 и до конца) и псевдо-аппаратную (HTS).
← →
kernel © (2007-10-21 08:28) [14]
> АПИ практически изначально поддерживал два вида адресации
> - абсолютную (где сектора считались последовательно с 0
> и до конца) и псевдо-аппаратную (HTS).
Что-то я ничего не понимаю :)
Какой АПИ? Где его взять?
← →
Anatoly Podgoretsky © (2007-10-21 12:04) [15]> kernel (21.10.2007 08:28:14) [14]
DOS апи, INT 21
По крайней мере начиная со второй версии.
← →
kernel © (2007-10-21 14:20) [16]А "стандартного" метода нет? :)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c