| www.delorie.com/djgpp/doc/libc-2.01/libc_363.html | search |
#include <dpmi.h> int _go32_dpmi_allocate_real_mode_callback_iret(_go32_dpmi_seginfo *info, _go32_dpmi_registers *regs);
See section DPMI Overview
This function allocates a "real-mode callback". Fill in the
pm_offset field of info and call this function. It will
fill in the rm_segment and rm_offset fields. Any time a
real-mode program calls the real-mode address, your function gets
called. The registers in affect will be stored in regs, which
should be a global, and will be passed to your function. Any changes in
regs will be reflected back into real mode. A wrapper will be
added to your function to simulate the effects of an iret
instruction, so this function is useful for trapping real-mode software
interrupts (like 0x1b - Ctrl-Break hit).
Zero on success, nonzero on failure.
_go32_dpmi_registers regs;
my_handler(_go32_dpmi_registers *r)
{
r.d.eax = 4;
}
setup()
{
_go32_dpmi_seginfo info;
_go32_dpmi_seginfo old_vector;
_go32_dpmi_get_real_mode_interrupt_vector(0x84, &old_vector);
info.pm_offset = my_handler;
_go32_dpmi_allocate_real_mode_callback_iret(&info, ®s);
_go32_dpmi_set_real_mode_interrupt_vector(0x84, &info);
do_stuff();
_go32_dpmi_set_real_mode_interrupt_vector(0x84, &old_vector);
_go32_dpmi_free_real_mode_callback(&info);
}
Go to the first, previous, next, last section, table of contents.
| prev next webmaster | delorie software privacy |
| Copyright © 1997 | Updated Apr 1997 |