| cvs.gedasymbols.org/djgpp/doc/libc/libc_432.html | search | 
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] | 
#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 effect 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.
| ANSI/ISO C | No | 
| POSIX | No | 
_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);
}
 | 
| webmaster | delorie software privacy | 
| Copyright © 2004 | Updated Apr 2004 |