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

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


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

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



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

setdta

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


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

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




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



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


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