pour détourner un vecteur d'interruption,
on utilise GetVect et SetVect. (voir l'aide)
voici un résident qui redirige les implessions sur lpt2
#include "dos.h"
extern unsigned _heaplen = 1024;
extern unsigned _stklen = 512;
void interrupt (*old17)(void);
void interrupt new17(bp,di,si,ds,es,dx,cx,bx,ax,cs,ip,flags)
unsigned short bp,di,si,ds,es,dx,cx,bx,ax,cs,ip,flags;
{
_DX=1;
old17();
ax=_AX;
}
void main()
{
old17=getvect(0x17);
setvect(0x17,new17);
keep(0, (_SS + (_SP/16) - _psp));
}
on peut aussi appeler une interruption avec l'assembleur inline, exemple :
asm {
mov ah,9;
int 13;
}
autre exemple :
union REGS inregs,outregs;
inregs.x.ax=0x4408;
inregs.h.bl=drive+1;
intdos(&inregs,&outregs); /* Teste si unit‚ fixe */
if(outregs.x.ax==1)
{
fprintf(stderr,"Une unit‚ non amovible a ‚t‚ sp‚cifi‚e\n");
}
else if(outregs.x.ax==0xf)
{
fprintf(stderr,"Une unit‚ non valable a ‚t‚ sp‚cifi‚e\n");
}
2006-10-08 11:49:41
·
answer #1
·
answered by Ramis V 7
·
1⤊
0⤋
ms dos, c etait il y a trop longtemps, (1989 a 1995 ) je me souvient plus
2006-10-08 12:22:18
·
answer #2
·
answered by Anonymous
·
0⤊
0⤋
Ah le bon vieux DOS !
utilise la fonction "Intr" ou "int" je me souviens pas bien !
pour les fonction DOS utilise la fonction 21 !
exp: intr( 21 );
puis tout dépend du service que tu demande généralement le numéro du service demandé est chargé dans AH !
cool !
2006-10-08 09:24:04
·
answer #3
·
answered by Q/R killer 3
·
0⤊
0⤋