C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 absread / a / Библиотечн. функции Borland C++

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;
}