WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Функция biosdisk

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Функция biosdisk
wDevil опубликован 30-01-2002 11:32 MSK   Click Here to See the Profile for wDevil   Click Here to Email wDevil  
Написал прогу, которая через функцию biosdisk должна писать 0 в начало диска! Но такого не происходит!
char buffer[512];
biosdisk(3,0x80,1,1,0,64,"0");
В чем косяк?
klep опубликован 30-01-2002 11:46 MSK     Click Here to See the Profile for klep  Click Here to Email klep     
Если меня не подводит память то biosdisk
это сервис для работы с дисками и он позволяет только читать!
abswrite - пробовал ?

может так проще:

char buf[512];

_AH=0x02;
_DL=0x80; /* drive , 0x80 - C:\*/
_DH=1; /* SIDE */
_CH=0; /* Cylinder*/
_CL=1; /* Sektor */
_AL=1; /* число секторов */

char far *p = buf;
_BX=FP_OFF(p);
__int__(0x13);

klep опубликован 30-01-2002 11:48 MSK     Click Here to See the Profile for klep  Click Here to Email klep     
_AH=0x03; - для записи
wDevil опубликован 30-01-2002 12:14 MSK     Click Here to See the Profile for wDevil  Click Here to Email wDevil     
abswrite не пробовал, потому что прочитал такое:
---------------------------------------------------------------
biosdisk
---------------------------------------------------------------

Назначение Ввод/вывод с жесткого или гибкого диска.

Синтаксис int biosdisk(int cmd, int drive, int head,
int track, int sector, int nsects,
void *buffer);

Прототип в bios.h

Замечания Эта функция использует прерывание 0х13 для вы-
зова дисковых операций непосредственно из BIOS.

drive - номер используемого дисковода : 0 для
первого дисковода гибких дискет, 1 для второго,
2 для третьего и т.д. Для жесткого дисковода
величина 0х80 для drive определяет первый дис-
ковод, 0х81 - второй, 0х82 - третий и т.д.

Для жесткого диска определяется физический дис-
ковод, а не логическое разделение диска.

При необходимости прикладная программа должна
сама интерпретировать информацию из таблицы
разбиения диска.

cmd опредедяет действия, которые должны быть
выполнены.

В зависимости от значения cmd могут понадобить-
ся и другие параметры. Ниже приведены значения
cmd для IBM PC, XT, АТ или PS/2 и совместимых с
ними моделей:

0 - сброс дисковой системы. Контроллер дисково-
да выполняет принудительный сброс. Все осталь-
ные параметры игнорируются.

1 - возврат статуса выполнения последней диско-
вой операции. Все другие параметры игнорируют-
ся.

2 - читает один или более дисковых секторов в
память. Начальный сектор для чтения задается
параметрами head, track и sector. Число секто-
ров задается параметром nsect. Данные читаются
по 512 байт в секторе в buffer.

3 - записывает один или более секторов диска из
памяти. Начальный сектор для записи задается
head, track и sector. Число секторов задается
параметром nsect. Данные записываются по 512
байт в сектор из buffer.

4 - проверяет один или более секторов. Началь-
ный сектор задается head, track и sector. Число
секторов задается в nsect.

5 - форматирует дорожку. Дорожка задается пара-
метрами head и track. buffer указывает на таб-
лицу заголовков секторов, которые будут записы-
ваться в заданную track. Смотри техническую
документацию для IBM PC для описания этой таб-
лицы и операции форматирования

Следующие значения cmd допускаются только для
моделей ХТ, АТ, PS/2 и совместимых с ними:

6 - форматирует дорожку и устанавливает флаги
дефектных секторов.

7 - форматирует дисковод, начиная с заданной
дорожки.

8 - возвращает параметры активного дисковода.
Эта информация помещается в первые четыре байта
buffer.

9 - инициализация характеристик парного диско-
вода.

10 - производит длинное чтение, 512+4 байта на
сектор.

11 - производит длинную запись, 512+4 байта в
сектор.

12 - производит позиционирование дисковода.

13 - производит альтернативный сброс дисковода.

14 - читает буфер сектора.

15 - записывает буфер сектора.

16 - проверяет готовность заданного дисковода.

17 - проводит перекалибровку дисковода.

18 - диагностика контроллера RAM.

19 - диагностика дисковода.

20 - внутренняя диагностика контроллера.

Замечание: biosdisk работает с секторами диска
на более низком уровне, чем файловая система MS
-DOS, поэтому некорректное использование этой
функции может привести к порче файлов или ог-
лавления жесткого диска.

Возвращаемое Эти операции возвращают статусный байт,
значение составленный из следующих бит:

0х00 - операция прошла успешно
0х01 - неверная команда
0х02 - маркер адреса не найден
0x03 - запись на диск запрещена
0х04 - запись не найдена
0х05 - ошибка сброса
0x06 - изменилось содержание диска после пос-
ледней операции
0х07 - ошибка чтения параметров дисковода
0x08 - переполнение DMA
0х09 - попытка для DMA перейти границу 64 Кб
0x0A - обнаружен дефектный сектор
0х0В - обнаружен флаг дефектной дорожки
0x0C - трек недоступен
0х10 - ошибка кода коррекции при чтении диска
0х11 - коррекция данных с помощью кода коррек-
ции
0х20 - контроллер неисправен
0х40 - ошибка позиционирования
0х80 - некорректный ответ дисковода
0хВВ - неизвестная ошибка
0xCC - ошибка записи
0xE0 - неверный статус
0хFF - ошибка доступа

Заметим, что 0х11 не является ошибкой, т.к.
данные корректны. Значение возвращается с той
целью, чтобы дать возможность прикладной прог-
рамме самой сделать выбор.

Переносимость Эта функция работает только на IBM PC и ей
подобных.
Разве эт не правильно!?

klep опубликован 30-01-2002 12:16 MSK     Click Here to See the Profile for klep  Click Here to Email klep     
Значит память меня подвела ;)
но лучше использовать int 13 - красивее.
wDevil опубликован 30-01-2002 12:19 MSK     Click Here to See the Profile for wDevil  Click Here to Email wDevil     
Слушай, я жутко начинающий! и мне че т не понятно у тя там нижние черты "_" Эт так переменные объявляешь!?
P.S. Извиняюсь за ламерский вопрос!

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.