SetIntVec

From Delphi & Pascal (česká wiki)
Jump to navigation Jump to search

Nastaví určený vektor přerušení na určenou adresu.

Deklarace
procedure SetIntVec(IntNo: Byte; Vector: Pointer);
Režim
Windows
Poznámky
IntNo udává číslo vektoru přerušení (0..255) a Vector udává adresu.
Vector lze zadat pomocí operátoru @, který dá adresu obslužné procedury. Např. je-li Int1BSave proměnná typu Pointer a Int1BHandler je identifikátor procedury, určené k obsluze přerušení $1B, pak následující úsek programu nejprve instaluje novou obsluhu tohoto přerušení a později obnoví původní obsluhu:
GetIntVec($1B, Int1BSave);
SetIntVec($1B, @@Int1BHandler);
.
.
.
SetIntVec($1B, Int1BSave);


Omezení
V chráněném režimu DOSu a ve standardním a rozšířeném režimu Windows SetIntVec nastavuje vektor přerušení chráněného režimu s daným číslem vektoru přerušení. SetIntVec nelze použít k modifikaci vektorů přerušení reálného režimu nebo vektorů vyjímek chráněného režimu.


Viz také
GetIntVec


Vzorový příklad

{ GetIntVc.PAS }
{ Vzorový příklad pro procedury GetIntVec a SetIntVec. }
{$C FIXED PRELOAD PERMANENT}
{ Pro Windows: }
{ uses WinDos, WinCrt; }
uses Dos, Crt;
 var
   Int1CSave : Pointer;

 {$F+,S-,W-}
 procedure TimerHandler; interrupt;
   begin
     { Ovladač časového přerušení }
     {*** Pozor na specifika DPMI ***}
   end;
 {$F-,S+}

 begin
   GetIntVec($1C,Int1CSave);
   SetIntVec($1C,Addr(TimerHandler));
   writeln('Stiskněte libovolnou klavesu...');
   repeat until Keypressed;
   SetIntVec($01C,Int1CSave);
 end.