Процедура GetIntVec

Модуль WinDos

Возвращает адрес, сохраненный в указанном векторе прерывания.

Объявление:

Procedure GetIntVec(IntNo : Byte; Var Vector : Pointer);

Режим:

Windows, Real, Protected

Замечание:

Параметр IntNo определяет номер вектора прерывания (0..255), А его адрес возвращается в переменной Vector.

Пример:

{ Пример программы для процедур GetIntVec и SetIntVec }

{ Обращайтесь с системными прерываниями с максимальной осторожностью }
{ Неверное использование прерываний может повредить информацию и/или }
{ сам компьютер на аппаратном уровне ! }

{ Еще один пример использования обработчиков прерываний можно }
{ посмотреть в программе для процедуры Keep }

Uses Dos, Crt;

Var Int1CSave : Pointer;
           Fl : Boolean;

{$F+}
Procedure TimerHandler;
Interrupt;
Begin
 { ISR на события таймера }

 {*** Обратитесь к документации по DDK или
  DPMI для информации по созданию ISR *** }

 { ISR на события таймера вызываются 18 раз в секунду }

 { Данный пример включает внутренний динамик 9 раз в
   секунду с частотой 1000 }

 If Fl Then NoSound Else Sound(1000);
 Fl:=Not Fl;
End;
{$F-}

Begin
 { Получаем старый вектор прерывания $1C - (системный таймер) }
 { и сохраняем его в переменной Int1CSave }
 GetIntVec($1C, Int1CSave);
 { Переназначаем его на нашу процедуру обработки прерывания }
 SetIntVec($1C, @TimerHandler);
 WriteLn('Нажмите любую клавишу для снятия обработчика...');
 Repeat
 Until Keypressed;
 { Возвращаем обработчик прерывания в исходное состояние }
 SetIntVec($1C, Int1CSave);
End.