CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
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; }