The DPMI (DOS Protected Mode Interface) specification describes services
provided by a DPMI host.  One popular DPMI host is Microsoft Windows and
these DPMI services are available to Windows programs and to DOS programs
when running under Windows 386Enh mode.

Note: A solid understanding of the Intel 80x86 protected-mode
architecture is mandatory.  See Using DPMI Services for related
information.

See: INT 2fH 1680H (release time slice)
INT 2fH 1686H (query CPU Mode / Query INT 31H services)
INT 2fH 1687H (obtain mode-switch entry address)
INT 2fH 168aH (get DPMI vendor's API address)

INT 31H 0000H (allocate LDT descriptors)
INT 31H 0001H (free LDT descriptor)
INT 31H 0002H (segment to descriptor)
INT 31H 0003H (query selector increment value)
INT 31H 0006H (query segment base address)
INT 31H 0007H (set segment base address)
INT 31H 0008H (set segment limit)
INT 31H 0009H (set descriptor access rights)
INT 31H 000aH (create alias descriptor)
INT 31H 000bH (query descriptor)
INT 31H 000cH (set descriptor)
INT 31H 000dH (allocate specific descriptor)
INT 31H 000eH (query multiple descriptors)
INT 31H 000fH (set multiple descriptors)

INT 31H 0100H (allocate DOS memory block)
INT 31H 0101H (free DOS memory block)
INT 31H 0102H (resize DOS memory block)

INT 31H 0200H (query real-mode interrupt vector)
INT 31H 0201H (set real-mode interrupt vector)
INT 31H 0202H (query processor exception handler vector)
INT 31H 0203H (set processor exception handler vector)
INT 31H 0204H (query protected-mode interrupt vector)
INT 31H 0205H (set protected-mode interrupt vector)

INT 31H 0300H (simulate real-mode interrupt)
INT 31H 0301H (call real-mode for FAR RET return)
INT 31H 0302H (call real-mode for IRET return)
INT 31H 0303H (allocate real-mode callback address)
INT 31H 0304H (free real-mode callback address)
INT 31H 0305H (query state save/restore addresses)
INT 31H 0306H (query raw mode switch address)

INT 31H 0400H (query DPMI version)
INT 31H 0401H (query DPMI capabilities)

INT 31H 0500H (query free memory information)
INT 31H 0501H (allocate memory block)
INT 31H 0502H (free memory block)
INT 31H 0503H (resize memory block)
INT 31H 0504H (allocate linear memory block)
INT 31H 0506H (query page attributes)
INT 31H 0507H (set page attributes)
INT 31H 0508H (map device in memory block)
INT 31H 0509H (map conventional memory in memory block)
INT 31H 050aH (query memory block size and base)
INT 31H 050bH (query memory information)

INT 31H 0600H (lock linear region)
INT 31H 0601H (unlock linear region)
INT 31H 0602H (mark real-mode region as pageable)
INT 31H 0603H (relock real-mode region)
INT 31H 0604H (get page size)

INT 31H 0700H (mark page as demand paging candidate)
INT 31H 0701H (discard page contents)

INT 31H 0800H (physical address mapping)
INT 31H 0801H (free physical address mapping)

INT 31H 0900H (disable virtual interrupt state)
INT 31H 0901H (enable virtual interrupt state)
INT 31H 0902H (query virtual interrupt state)

INT 31H 0a00H (query vendor-specific API entry address)

INT 31H 0b00H (set debug watchpoint)
INT 31H 0b01H (clear debug watchpoint)
INT 31H 0b02H (query state of debug watchpoint)
INT 31H 0b03H (reset debug watchpoint)

INT 31H 0c00H (setup DPMI TSR callback)
INT 31H 0c01H (protected-mode terminate and stay resident)

INT 31H 0d00H (allocate shared memory)
INT 31H 0d01H (free shared memory)
INT 31H 0d02H (serialize on shared memory)
INT 31H 0d03H (free serialization on shared memory)

INT 31H 0e00H (query coprocessor status)
INT 31H 0e01H (set coprocessor emulation)

Notes: Before accessing any INT 31H services, the CPU must be in
protected mode.

INT 2fH 16xxH (Enh386 Windows Services & Notifications)
- -

DPMI Services