Mail Archives: djgpp/2004/04/11/23:15:41
Hans-Bernhard Broeker <broeker AT physik DOT rwth-aachen DOT de> wrote in message news:<c5be5c$phh$1 AT nets3 DOT rz DOT RWTH-Aachen DOT DE>...
> Joel <jbs30000 AT aol DOT com> wrote:
> > Anyway, is it possible to call the old routine stored with
> > _go32_dpmi_get_real_mode_interrupt_vector while in the middle of the
> > new routine?
>
> I doubt it. The problem being that the end of an interrupt handler is
> signalled by a IRET instruction. The old routine will be ending in
> such an IRET. So at the minimum, you'ld have to use the DPMI simulate
> interrupt call method to call it, and I'm not sure that's allowed from
> inside an interrupt handler.
At the risk of posting too many replies at a time, here's one more.
I see you're warning against this kind of thing, so it might not work,
but I might try this and see how it works.
say I have _go32_dpmi_seginfo OldInt, NewInt; to store the old
interrupt vector and create a new one.
Now, I hook a real mode interrupt and my routine is called. Now say,
at a certain point, I want the old handler called. I could try this:
_go32_set_real_mode_interrupt_vector(Interrupt Number, &OldInt);
Set the dpmi reg struct as needed
_dpmi_int(Interrupt Number, &r);
_go32_set_real_mode_interrupt_vector(Interrupt Number, &NewInt);
Probably not safe with int 21H, but it could work with others, I
think.
- Raw text -