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

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


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

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



Возможности языков семейства Си по истине безграничны, однако, в этой свободе кроются и недостатки: всегда нужно программисту держать ухо востро и контроллировать "переполнение буфера", чтобы потом программа не вылетала в "синий экран" на массе разнообразных версий Windows и железа у пользователей. Те же крэкеры и реверсеры специально ищут в коде программ на Си уязвимости, куда можно подсадить любой вирусный код, об этом более подробно автор рассказывал в своём видеокурсе здесь. Я там многое узнал и теперь мой код стал значительно более безопасный.

randbrd

 
 Функция            Чтение с диска.
 
 
 
 Синтаксис          #include <dos.h>
 
                    int randbrd(struct fcb *fcbptr, int recent);
 
 
 
 Файл, содержащий   dos.h
 
 прототип
 
 
 
 Описание           Функция randbrd    считывает    recent    записей,
 
                    используя блок FCB,  адресуемый указателем fcbptr.
 
                    Записи  считываются  в  память  по текущему адресу
 
                    DTA. Записи считываются с диска, причем информация
 
                    берется  из  поля  random  record  блока FCB.  Эта
 
                    операция выполняется с помощью  системного  вызова
 
                    DOS 0x27.
 
 
 
                    Действительное число   считанных   записей   можно
 
                    определить   проанализировав  поля  random  record
 
                    блока  FCB.  Данное  поле  после  операции   будет
 
                    заполнено   информацией   о   числе  действительно
 
                    считанных записей.
 
 
 
 Возвращаемое       В зависимости от результата работы функций randbrd
 
 значение           возвращает следующие значения:
 
 
 
                    0- все записи прочитаны;
 
 
 
                    1- достигнут конец файла (EOF) и последняя запись
 
                       прочитана полностью;
 
 
 
                    2- считанные записи будут располагаться рядом с
 
                       адресом 0xFFFF (прочитано записей столько,
 
                       сколько возможно).
 
 
 
                    3- достигунт конец файла и последняя запись обра-
 
                       ботана не полностью.
 
 
 
 
 
 Переносимость      Функция уникальна для DOS. Функция не совместима с
 
                    Windows.
 
 
 
 Смотрите также     getdta, randbwd, setdta.
 
 
 
 Пример:
 
 
 
 #include<process.h>
 
 #include<string.h>
 
 #include<stdio.h>
 
 #include<dos.h>
 
 
 
 int main(void)
 
 {
 
    char far *save_dta;
 
    char line[80],buffer[256];
 
    struct fcb blk;
 
    int i,result;
 
    /* ввести имя файла */
 
    printf("Введите устройство и имя файла (без маршрута, например\
 
            a:file.dat)\n");
 
    gets(line);
 
    /* записать имя файла в FCB */
 
    if(!parsfnm(line,&blk,1))
 
    {
 
       printf("Ошибка при вызове parsfnm\n");
 
       exit(1);
 
    }
 
    printf("Устройство #%d файл: %s\n\n",blk.fcb_drive, blk.fcb_name);
 
    /* открыть файл, с использованием функций DOS, работающих с FCB */
 
    bdosptr(0x0f,&blk,0);
 
    /* сохранить старый DTA, создать новый */
 
    save_dta = getdta();
 
    setdta(buffer);
 
    /* передать в FCB информацию об DTA */
 
    blk.fcb_recsize = 128;
 
    blk.fcb_random = 0L;
 
    result = randbrd(&blk,1);
 
    /* проверить результат операции */
 
    if(!result)
 
       printf("Чтение закончено успешно\n");
 
    else
 
    {
 
      perror("Ошибка, во время чтения \n");
 
      exit(1);
 
    }
 
    /* считать данные из новой DTA */
 
    printf("Первые 128 символов:\n);
 
    for(i=0; i<128; i++)
 
       putchar(buffer[i]);
 
    /* восстановить DTA */
 
    setdta(save_dta);
 
    return 0;
 
 }


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

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




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



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


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