36 lines
1.8 KiB
HTML
36 lines
1.8 KiB
HTML
|
|
|
|
When a DPMI client switches into protected mode, a unique interrupt
|
|
descriptor table (IDT) is created for the client by the DPMI host.
|
|
Initially, all software interrupts (except for Int 31H, Int 2FH and
|
|
Int 21H Function 4CH) or external hardware interrupts are directed to
|
|
a handler that simply reflects the interrupt to real mode; i.e. the
|
|
DPMI host's default handler simply switches the CPU into real mode and
|
|
re-issues the interrupt, so that it can be serviced by the original
|
|
real mod owner of the interrupt. The contents of the general
|
|
registers and flags are passed to the real mode handler and the
|
|
modified registers and flags are returned to the protected mode
|
|
handler. Segment registers and the stack pointer are not passed
|
|
between modes; the contents of the segment registers after the switch
|
|
to real mode are undefined, and the DPMI host automatically supplies a
|
|
valid real mode stack. <p>
|
|
|
|
DPMI clients can install their own distinct real mode or protected
|
|
mode handlers for software and external hardware interrupts with <a
|
|
href="api/310201.html">Functions 0201H</a> and <a
|
|
href="api/310205.html">0205H</a> respectively. If a protected mode
|
|
handler is installed, it is called instead of any real mode handler or
|
|
the DPMI host's default handler. Just as in real mode, the protected
|
|
mode handler can either service the interrupt and terminate with an
|
|
IRET, or transfer to the next handler in the chain by executing a
|
|
<tt>PUSHF/CALL</tt> or a <tt>FAR JMP</tt>. The final handler in the
|
|
protected mode handler chain (the DPMI host's default handler) will
|
|
reflect the interrupt to real mode. <p>
|
|
|
|
<hr>
|
|
<img src="/icons/menu.sm.gif"><a href="ch4.4.1.html">Virtual Interrupts</a><br>
|
|
<img src="/icons/menu.sm.gif"><a href="ch4.4.2.html">Hardware Interrupts</a><br>
|
|
<img src="/icons/menu.sm.gif"><a href="ch4.4.3.html">Software Interrupts</a><br>
|
|
|
|
|