Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.

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


<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS