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

Ваш аккаунт

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

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

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

absread

absread


Функция            Чтение абсолютных секторов на диске.

Синтаксис          #include<dos.h>
                   int absread(int drive, int nsects,
                               int lsect, void * buffer);

Файл, содержащий   dos.h
прототип

Описание           absread считывает указанные сектора диска. Функция
                   игнорирует логическую структуру диска и не обращают
                   внимание на файлы, блоки FAT или директории.

                   аbsread читает  заданные  сектора диска посредством
                   прерывания DOS 0x25.

                   drive  = номер читаемого диска (0=А, 1=В, и т.д.)
                   nsects = количество читаемых секторов
                   lsect  =  начальный логический  номер сектора
                   buffer = адрес памяти, куда считываются данные.

                   Число считываемых      секторов      ограничивается
                   максимальным размером буфера (64К) или даже меньше,
                   если реальный буфер имеет меньший размер.

Возвращаемое       При успешном завершении absread  возвращает 0.
значение           При возникновении ошибки, функция возвращает
                   значение -1 и присваивают переменной errno значение
                   регистра AX, получаемое при системном вызове.

Переносимость      absread уникальна для DOS.
                   Функция не поддерживается Windows.

Смотрите также     abswrite, biosdisk.

Пример:

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<dos.h>
#include<ctype.h>

#define SEGSIZE 512

unsigned char buf[SEGSIZE];

int main(void)
{
   int i,j,sector,drive;
   char str[10];
   printf("Введите метку диска:");
   gets(str);
   drive = toupper(str[0])-'A';
   printf("Введите номер сектора, который нужно считать:");
   gets(str);
   sector = atoi(str);
   if(absread(drive,1,sector,&buf)!=0)
   {
      perror("Ошибка диска")ж
      exit(1);
   }
   printf("\nДисковод %c Сектор %d\n",'A'+drive,sector);
   for(i=0; i<SEGSIZE; i+=16)
   {
      if((i/16)==20)
      {
          printf("Для продолжения нажмите любую клавишу");
          getch();
          printf("\n");
      }
   printf("%03d",i);
   for(j=0;j<16;j++)
      printf("%02X ",buf[i+j]);
   printf("\t");
   for(j=0; j<16;j++)
      if(isprint(buf[i+j]))
          printf("%c",buf[i+j]);
      else
          printf(".");
          printf("\n");
   }
   return 0;
}

Оставить комментарий

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