Přidáno 1 717 bajtů,
2. 10. 2012, 15:29 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.
[[Category:DOS]]
[[Category:WinDos]]
[[Category:Procedúry DOS]]
[[Category:Procedury podpory přerušení]]