delorie.com/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 |