DJGPP是DOS下完整的32位的C/C++保护模式的编译器,运行于386以上机器。DJGPP有一个好帮手叫作Allegro,它是个图形/声音编程库,功能非常强大,应用于界面编程非常方便。可以Allegro编程库编写程序,然后用DJGPP编译。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24


int _go32_dpmi_get_real_mode_interrupt_vector(int vector, _go32_dpmi_seginfo *info);


int _go32_dpmi_set_real_mode_interrupt_vector(int vector, _go32_dpmi_seginfo *info);int _go32_dpmi_chain_protected_mode_interrupt_vector(int vector, _go32_dpmi_seginfo *info);typedef struct {


unsigned long size;


unsigned long pm_offset;


unsigned short pm_selector;


unsigned short rm_offset;


unsigned short rm_segment;


} _go32_dpmi_seginfo;

这就是DPMI.H头文件的几个函数,用法在下面介绍

1
2
3
4
5
6


_go32_dpmi_seginfo OldVect;


_go32_dpmi_seginfo NewVect;
1
2
3
4
5
6
7
8
9


static int NewFunction(); //应用的中断处理函数_go32_dpmi_get_protected_mode_interrupt_vector(0x0c, &OldVect);//取得旧中断向量


NewVect.pm_offset=(int)NewFunction;//看看结构体的定义就明白了


_go32_dpmi_chain_protected_mode_interrupt_vector(0x0c,&NewVect);//设置新中断向量