Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Количество bad-секторов на диске

9.0K
21 января 2006 года
vov4ik
20 / / 09.08.2005
Доброго дня!

Решаю следующую задачу:
Необходимо средствами Turbo Assembler получить количество bad-секторов на диске.

Я так понимаю необходимо использовать ф-ию 02h прерывания int 13h. Но как определить сектор является бэдом или нет, и еще откуда и докуда надо читать? (Диск 1.44")

Зараннее спасибо.
2.2K
21 января 2006 года
Brezhnev1980
156 / / 13.08.2005
Я только знаю,что в ФАТЕ помечается,если кластер содержит плохие секторы:FAT bad sectors (смотри в таблице Media descriptors!)
15K
22 января 2006 года
AndreyD
8 / / 22.01.2006
Цитата:
Originally posted by vov4ik
Доброго дня!

Решаю следующую задачу:
Необходимо средствами Turbo Assembler получить количество bad-секторов на диске.

Я так понимаю необходимо использовать ф-ию 02h прерывания int 13h. Но как определить сектор является бэдом или нет, и еще откуда и докуда надо читать? (Диск 1.44")

Зараннее спасибо.



INT 13H 08H: Get Drive Parameters:│
Expects: AH 08H
DL drive: 0-3=diskette; 80H-81H=hard disk
Returns: AH
BIOS disk error code if CF is set to CY
CX maximum value for cylinder and sector
DL number of disks on first controller
DH maximum value for head

и читать с нулевого сектора нулевой дорожки через INT 13h(AH - 02h)

вот и все

15K
22 января 2006 года
AndreyD
8 / / 22.01.2006
Цитата:
Originally posted by vov4ik
Но как определить сектор является бэдом или нет,


в AH (при вызове INT 13h 02h) возвращается код ошибки. Для плохово сектора - 04h

И еще одно: перед читанием дискеты лочьше всего сбросить контроллер, а при появлении ошибки попробовать прочитать сектор еще 2 раза, а потом сделать reset через int 13h 00h :)

3.8K
23 января 2006 года
Supervisor
158 / / 29.05.2005
К слову, BAD-ы в некоторых случаях умеет восстанавливать программа HDDSpeed, доводилось ей пользоваться - работает. Есть ещё программа HDDRegenerator.
После восстановления секторов необходимо в программе PartitionMagic выполнить функцию Bad sector retest, чтобы убрать записи о сбойных секторах из FAT/MFT таблицы.
252
23 января 2006 года
koderAlex
1.4K / / 07.09.2005
Цитата:
Originally posted by vov4ik
Доброго дня!

Решаю следующую задачу:
Необходимо средствами Turbo Assembler получить количество bad-секторов на диске.

Я так понимаю необходимо использовать ф-ию 02h прерывания int 13h. Но как определить сектор является бэдом или нет, и еще откуда и докуда надо читать? (Диск 1.44")

Зараннее спасибо.


1)читаешь сектор , попутно запоминаешь ошибки .
2)записываешь сектор последовательностью 10101010(AAh),ошибки тоже запоминаешь .
3)верифицируешь (ошибки - угадай что:D )
(пункты 2,3 можно повторить ,для надёжности,с последовательностью 01010101 (55h))
4)анализируешь ошибки - особо интересны две :CRC ,таймаут .
если таймауты , то разрушена поверхность - инфу не спасти .
если CRC - можно попытаться восстановить .
5)если сектор с ошибками - записанную инфу или уничтожаешь (так как может не хватить места ), или на чистый неиспользованный сектор .(не забудь таблицу подкорректировать )
для ускорения работы операции лучше проводить для целого цилиндра )
если сектор без ошибок - возвращаешь на место .

проги якобы восстанавливающие беды - на самом деле форматируют дорожку (есть вероятность что ошибка попадёт в промежуток между секторами ) .

3.8K
23 января 2006 года
Supervisor
158 / / 29.05.2005
Цитата:
проги якобы восстанавливающие беды - на самом деле форматируют дорожку


Не обязательно. Можно сделать remap.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог