|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.04.2011, 18:57 | #1 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 25
|
Количество секторов и размер диска
Используя механизм PIO получаю доступ к жесткому диску (ATA). После команды IDENTIFY DEVICE (0xEC) читаю паспорт диска.
Не могу разобраться как узнать кол-во секторов и соответственно получить размер диска. Адресация - LBA-48. Число секторов, доступных в этом режиме, можно узнать из слов 100-103 блока идентификации устройства. Вот полученные значения: WORD 100: старший байт: 234 младший байт: 176 WORD 101: старший байт: 37 младший байт: 66 WORD 102: старший байт: 0 младший байт: 0 WORD 103: старший байт: 0 младший байт: 0 Посмотрел в то, что пишет EVEREST: 625142448 секторов (по 512 байт). Никак связать полученные мной значения с этой цифрой не получилось.. Все остальные параметры, которые я определял по паспорту, совпали с эверестовскими.
Удел сильных - уделывать слабых
|
04.04.2011, 19:42 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
смотрю по Кулакову
слово 57-58 текущая емкость в секторах. а слова 92-126 зарезервированы. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
04.04.2011, 20:12 | #3 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 25
|
Слова 57-58 - это для режима CHS.
Смотрю по гуку (2007г, Интерфейсы устройств хранения: ATA, SCSI и другие). Не все слова из 92-126 зарезервированы. В частности 100-103, которые как раз и показывают сколько секторов доступно в LBA-48 (там ограничение по секторам - до 2^48 -1 штук)
Удел сильных - уделывать слабых
|
05.04.2011, 00:50 | #4 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 25
|
Разобрался. Может кому пригодится:
Максимальное число секторов (2^48)-1 будет занимать 48 бит (16 байт). Значение слова №100 соответствует первым 16 битам от общего числа секторов, слово №101 - битам 16-31 и так далее. Т.к. в моем случае последние 2 слова равны нулю, то: word101 << 16; word101+=word100; Теперь значение word101 равно числу секторов диска.
Удел сильных - уделывать слабых
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Подсчитать количество слов и количество букв | MDSIQ | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 13.11.2010 16:57 |
Запись секторов на логический диск Windows 7/Vista SP2 | Ivan_32 | Win Api | 0 | 11.10.2009 07:25 |
Как определить количество занятых секторов на диске в делфи? | buka_14 | Помощь студентам | 0 | 16.04.2009 16:42 |
количество цифр и количество символов до первой гласной буквы | 111111 | Общие вопросы C/C++ | 2 | 22.12.2008 12:15 |
Размер Image изменяется на размер картинки, а сама она рисуется на области первой картинки | RPGer | Мультимедиа в Delphi | 6 | 20.10.2008 19:54 |