Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.191.189.120] |
|
Сообщ.
#1
,
|
|
|
Как узнать размер винта через порты.
|
Сообщ.
#2
,
|
|
|
С постоянно периодичностью возникает этот вопрос.
Вот тебе исходник, я там обкомментировался, разберешься: http://www.sources.ru/asm/devid32.shtml Работает под всё, только с NT есть некоторые ограничения. Там даже размер винта вычисляется, но только для Win32, для DOS меня ломало вставить |
Сообщ.
#3
,
|
|
|
Код конечно шороший, но непонятный. Зачем цилиндры надо было трогать?
Сформулирую, точнее вопрос: В каком слове в паспорте винта хранится количество цилиндров? Только не говорите, что во втором. Это не верно. |
Сообщ.
#4
,
|
|
|
Не парься, скачай спецификацию IDE.
Цитата Только не говорите, что во втором. Это не верно. Ну-у, наглые инсинуации!!! В той самой спецификации написано, что в первом слове (считая от нуля) содержится число цилиндров для нормальной конфигурации винта (NORMAL в Setup'e). Это случай когда количество секторов меньше 16515072 (опять же в соответствии со спецификацией). Текущие значения (wCurrCyls и т.д.) я трогать не стал... Я сделал, как сделал, но если ты найдешь случай, когда моя программа определяет ошибочно размер винта, я сниму шляпу. Вообще внимательней читай спецификацию, и непонятное станет понятным! В случае необходимости могу дать ссылку на спецификацию. |
Сообщ.
#5
,
|
|
|
Я тебя не понял. У меня в паспорте в первом слове(считая от нуля) число 0x3fff. У меня
цилиндров больше(даже больше чем слово). Тут возникает ворос не по теме: Как работать с далекими цилиндрами, т.е. с теми которые дальше, чем 0xffff ? |
Сообщ.
#6
,
|
|
|
Может, у меня фефекты фикции?
Буду цитировать спецификацию ATA-3, надеюсь, на ее высокий штиль изложения Цитата Word 1: Number of cylinders The number of user-addressable logical cylinders in the default translation mode. If the value in Words 60 and 61 exceed 16,515,072, this word shall 16,384. Word 3: Number of logical heads ... this word shall 16. Word 6: Number of logical sectors per logical track ... this word shall 63. По-моему, проще пареной репы. Поэтому я проверяю двойное слово (слова 60 и 61) меньше ли оно или равно 16515072? Если меньше или равно 0 (старые винты без поддержки LBA), я использую слова, указанные выше (слова 1, 3, 6), потому что они содержат корректные значения. Иначе, использую число секторов в LBA режиме (слова 60 и 61). И что может быть не понятным в этом? Насчет цилиндров больше 16383 (3FFFh), есть такой режим LBA, где все эти цилиндры превращаются в дополнительные головки. Есть текущие значения цилиндров, головок и секторов (слова 54, 55, 56). Еще раз повторяю, прочти спецификацию, чтоб я не парился, объясняя вещи, которые ты сам способен прочитать. |
Сообщ.
#7
,
|
|
|
Спасибо. Я просто не сразу понял тебя. Если не трудно дай сылку на специфекацию.
|
Сообщ.
#8
,
|
|
|
http://195.96.188.4/hardware/ata3.zip
http://195.96.188.4/hardware/ata4.zip http://195.96.188.4/hardware/ata5.zip |
Сообщ.
#9
,
|
|
|
Еще раз спасибо, вещь крутая.
|
Сообщ.
#10
,
|
|
|
А еще есть место http://www.t13.org, это комитет, занимающегося разработкой IDE. Там лежат все спецификации, вплоть до проектного ATA7.
2Brand: а как ты хочешь работать с далекими цилиндрами? |
Сообщ.
#11
,
|
|
|
Ritchie смотри ATA6. Там нет далеких цилиндров, но есть 48-битное LBA, что позволяет работать с винтами более чем 32Gb.
|
Сообщ.
#12
,
|
|
|
Ну ты вообще-то про них, далеких, спрашивал, вот мне и стало интересно, зачем тебе такое
|
Сообщ.
#13
,
|
|
|
Да, и не 32 G, а 137,5.
|
Сообщ.
#14
,
|
|
|
Подскажите как оптимально скачать из буфера в оперативку n секторов.
|