Otevřít hlavní menu

Změny

SetIntVec

Přidáno 1 717 bajtů, 2. 10. 2012, 16:29
Založena nová stránka: 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á č…
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í]]