Реферат: Дополнительные дисковые утилиты

Требуется задать имя диска и тип формата. Все аналогично утилите “Restore Boot Record” (см. выше).

Технология: задается загрузочная запись, она анализируется и записывается на дискету. Затем, используя полученную информацию, очищаются FAT и корневой каталог. Если все пройдет успешно, то вернется сообщение “All right!”, иначе будет выдано сообщение об ошибке.

Save User Boot Record

Сохраняет в файл загрузочную запись с дискеты, для использования предыдущими утилитами.

Требуется задать имя диска и имя файла.

Технология: с помощью абсолютного чтения с диска (прерывание 25h) считывается нулевой сектор дискеты, и эти 512 байт записываются в заданный файл. Если все пройдет успешно, то вернется сообщение “All right!”, иначе будет выдано сообщение об ошибке.

ОПЦИИ:

Directories

Можно задать каталог по умолчанию для файлов форматов, сохраняемых утилитой “Restore Boot Record”. Этот каталог будет присутствовать в строке для ввода имени файла пользовательского формата.

Опции можно сохранять для дальнейшего использования.

ПРОБЛЕМЫ: РЕШЕННЫЕ И НЕРЕШЕННЫЕ.

Само собой, при написании любой программы возникают проблемы большие и поменьше, кое-какие оказываются полностью разрешенными, некоторые удается ловко обойти, ну и остается малая часть нерешенных или оставленных до лучших времен.

И вот я хочу поделиться своими проблемами и способами их решения:

· Оказывается, что под Windows прерывание 13h делает не то же, что под DOS (я так и не выяснил, что именно), поэтому долгое время не работало определение типов дисководов. Обошел я это дело путем считывания данных дисководов прямо из CMOS, используя порты 70h и 71h.

· Форматов дискет существует просто громадное множество (я могу перечислить около двадцати - это более-менее нужные), поэтому встал вопрос - как их всех поддерживать? Пришлось оставить на долю пользователя копировать нужные форматы в файл с помощью прилагаемой утилиты “Save User Boot Record”. Да и тех, что поддерживаются, слишком много, чтобы всех их держать в полном виде в памяти (7*512 байт = 3584 байта), поэтому пришлось их проанализировать и оставить только различающиеся байты (15 байт).

Экономия: 3584-(512+7*15) = 2967 байт.

Ну, на этом, пожалуй, и хватит, так как самое основное я уже упомянул, а остальные проблемы не стоит и упоминать (слишком мелкие и давно уже решенные).

Автор выражает благодарность за помощь по подготовке данной статьи своему научному руководителю Вадиму Сергеевичу Рублёву.

К-во Просмотров: 125
Бесплатно скачать Реферат: Дополнительные дисковые утилиты