The DCI Manager is an abstraction layer that provides a simplified interface from DCI Clients to DCI Providers. The DCI Manager locates and loads providers, and provides entry points corresponding to each of the DCI driver messages.
The DCI Manager checks and loads DCI Providers in the following sequence:
The provider specified by the "DCI=" entry in the [Drivers] section of the SYSTEM.INI file
The display driver for DCI Provider support, and if it fails
Loads DCISVGA.DRV as the default DCI Provider.
This loading sequence can be controlled by a "DCIDVA=" flag in the [DrawDib] section of the WIN.INI file, as follows:
DCIDVA FLAG
DCIMAN RESPONSE
DCIDVA=0
Does not open any DCI Provider
DCIDVA=1
Loads provider especified by the DCI= line only
DCIDVA=2
Looks for DCI support in the display driver only
DCIDVA=4
Loads DCISVGA only
It is important that DCI Clients use the interface provided by the DCI Manager, rather than sending messages directly to the DCI Provider, there is no guarantee that the message interface to the provider will not change. In addition, all Win16 to Win32 "thunking" will occur inside the DCI manager, so the DCI Manager is imperative in the Windows (Chicago) environment.
A DCI Client should use DCI Manager functions to open and close providers as well as to create and enumerate surfaces, but it is not necessary to close a provider to destroy a surface. A simple call to the surface's DestroySurface callback function will do all cleanup necessary for a surface, and new surfaces may be created using the same DCI device context.