The DPMI Specification

DPMI was devised by a committee of major software vendors. The first (and current) DPMI version is Version 1.0.

DPMI was defined to allow DOS programs to access extended memory while maintaining system protection. DPMI defines a specific subset of DOS and BIOS calls that can be made by DOS programs running in protected mode. These services are accessed via software interrupt 31h, using a defined series of functions which protected mode programs may use to allocate memory, modify descriptors and call real mode software.

Like VCPI, a DPMI host (or server) program provides mode switching and extended memory management services to client programs. Unlike a VCPI server, however, a DPMI host runs at a higher privilege level than its clients. A DPMI host supports demand-paged virtual memory and maintains complete control over the address space and hardware access of its clients.

Some DPMI implementations execute multiple protected mode programs in independent virtual machines. In such implementations, DPMI applications behave exactly like any other standard DOS programs. For example, they can run in the background or in a window, provided the environment supports these features. Programs that run in protected mode gain all the benefits of virtual memory and can utilize a 32-bit flat memory model if desired. OS/2 Version 2.0 provides a DPMI implementation of this nature.

DPMI services accessed via INT 31h are only available to protected mode programs. Programs running in real mode cannot use these services. The only exception to this rule is the service which allows an application to enter protected mode, which must be called by real mode programs before calling any other DPMI service.

Note that the majority of software vendors who released applications using the VCPI specification have since released versions which use DPMI instead, or have produced upgrades to their software to take advantage of DPMI.


[Back: Virtual Control Program Interface]
[Next: DPMI Hosts and Clients]