SetIntVec
Verze z 2. 10. 2012, 15:42, kterou vytvořil Zdeno Sekerák (diskuse | příspěvky) (1 revízia: Uses DOS)
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.