DPMI services are provided by a DPMI host program. Programs which use DPMI services are known as DPMI clients. Generally, DPMI clients fall into two categories:
Most DPMI applications are likely to be extended applications. These applications are bound with a DOS extender, which is the actual DPMI client since it requests DPMI services on the application's behalf. The application calls DOS extender services, which are then translated by the DOS extender into DPMI service calls. The advantage of an extended application over one that calls DPMI services directly is that generally, an extender will support functions other than DPMI services. In fact, it is recommended that extenders look for extension services in the following order:
Extended memory may be allocated "top-down" by hooking the BIOS extended memory size system call (INT 15h, function 88h) and reporting less memory available than is actually present on the machine. This method may be used by DOS extenders to allocate a contiguous block of memory starting at the top of extended memory and growing downward. Since other applications querying the amount of memory available in the system will not be able to "see" this upper portion of memory, the memory is available solely to the DOS extender.
A DPMI client can provide a single set of functions to an application, and then translate these functions to one or more underlying services (for example, DPMI, EMS, and/or XMS) provided by the client. Where the corresponding host's services are lacking in a particular function, the extender must itself provide that function for the application. This is illustrated in Figure "Client/Server Structure for Operating System Extenders".
As shown in Figure "Client/Server Structure for Operating System Extenders", application code directly accesses a set of base extender functions. The extender then has separate modules for each type of extension service, and itself contains code to provide functions in which the underlying service layers are lacking.
Readers should refer to the DPMI 1.0 Specification published by the DPMI committee for information concerning the external interfaces available to DPMI applications. Copies of the specification may be obtained by contacting Intel Literature Sales, P.O. Box 58130, Santa Clara, CA 95052.