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

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июля!


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

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



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

setvect

 
 Функция            Устанавливает вектор прерывания.
 
 
 
 Синтаксис          void setvect(int intr_num, void interrupt(*isr)());
 
 
 
 Файл, содержащий   dos.h
 
 прототип
 
 
 
 Описание           Каждый микропроцессор  семейства   8086   включает
 
                    набор векторов прерываний, с номерами от 0 до 255.
 
                    Четырех  байтовые  значения  каждого   вектора   в
 
                    действительности    представляют    собой   адреса
 
                    программ обработки соответствующих прерываний.
 
 
 
                    setvect устанавливает  новую  программу  обработки
 
                    прерывания с номером intr_num,  передавая ее адрес
 
                    в параметре isr. Адрес подпрограммы можно передать
 
                    только  в  том  случае,  если  она  объявлена  как
 
                    подпрограмма обработки прерывания (interrupt).
 
 
 
                    Примечание. Если    вы    используете   прототипы,
 
                    объявленные в dos.h то вы можете  просто  посылать
 
                    адрес  подпрограммы обработки прерывания setvect в
 
                    любой модели памяти.
 
 
 
 Возвращаемое       Нет.
 
 значение
 
 
 
 Переносимсоть      setvect уникальна для микропроцессоров семейства
 
                    8086.
 
 
 
 Смотрите также     getvect.
 
 
 
 Пример:
 
 
 
 /*  Примечание:
 
     Это программа обработки прерываний. Вы должны компилировать
 
     данную программу с отключенной функцией проверки переполнения
 
     стека (Test Steck Overflow - off).  */
 
 
 
 #include<stdio.h>
 
 #include<dos.h>
 
 #include<conio.h>
 
 
 
 #define INTR 0X1C  /* прерывание по таймеру */
 
 
 
 void interrupt (*oldfunc)(); /* указатель на прерывание */
 
 int count = 0;
 
 
 
 void interrupt handler()
 
 {
 
    /* увеличить счетчик */
 
    count ++;
 
    /* вызвать старый вектор */
 
    oldfunc();
 
 }
 
 
 
 int main(void)
 
 {
 
    /* сохранить старый вектор */
 
    oldfunc = getvect(INTR);
 
    /* установить новый вектор */
 
    setvect(INTR,handler)
 
    /* ничего не делать */
 
    while(count<20)
 
       printf("счетчик = %d\n",count);
 
    /* восстановить старый вектор */
 
    setvect(INTR,oldfunc);
 
    return 0;
 
 }
 
 


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

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




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



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


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