Chapter 1: Architectural Overview
In the following discussion, DCI clients are Windows subsystem components that request DCI services. The DCI Provider may be either the Windows display driver or a separate DLL that communicates with display hardware. A surface is a display memory area that the DCI Provider supplies to the DCI client for direct writing. These addresses may point to visible frame buffer memory or to offscreen buffers.
The following diagram shows the relationship between the components of DCI and how DCI relates to GDI.
DCI is implemented by the DCI Manager and the DCI Provider. The DCI Provider contains the display device-dependent part of DCI. The DCI Manager provides the interface which DCI clients use to set up the display hardware below DCI, and is not device dependent DCI Manager and Display Module are there for setup, housekeeping and maintenance.
The DCI Manager checks for a DCI Provider entry in SYSTEM.INI ( a DCI= entry in the [drivers] section). This entry should name the separate driver that provides DCI support or (note: without the .DRV extension); if the support is built inside the display driver, this entry should be set to the string "display".
The DCI Manager finds the DCI Provider by issuing a standard Windows query GDI escape to call the file listed in the SYSTEM.INI entry.
If no DCI Provider is found, the DCI Manager will return a NULL handle to the requesting DCI Client. In that case, the DCI is not available to the DCI client, so GDI calls must be used instead of DCI. The DCI Client - that is a library or Windows subsystem - is responsible for supplying the same capabilities to its applications whether DCI is available or not. Note that applications should not use DCI directly, because not all systems will have DCI support. By using an interface library, the application can run on multiple systems, whether or not DCI exists.
DCI abstracts display memory through the concept of a surface. Surfaces may be on-screen or off-screen, and DCI providers may allow multiple surfaces to be created. There are three types of surfaces that may be provided by DCI. The Windows display is the primary surface. Offscreen surfaces may be created by display systems which support offscreen buffers, and overlay surfaces may be created by display systems which provide support for graphics/video overlay.
Surfaces are presented to DCI clients as linear memory ranges. The virtual frame-buffer device DVA.386 allows bank-switched display devices to simulate linear memory ranges by handling bank switching through a page-fault mechanism, for Windows 3.1 support. For Chicago bank-switched display drivers, please refer to the Chicago DDK documentation for VFlatd.386 support.