GDI Communication with the Driver
The driver exports only one function to GDI: DrvEnableDriver. All other driver-supported functions, including the DrvDisableDriver function, are exposed to GDI through an array of pointers. A GDI call to DrvEnableDriver initializes the driver and passes back the list of driver-supported graphics DDI functions. While there are some functions a driver must support, GDI will handle those operations not included in the function list received from the driver's DrvEnableDriver routine. GDI calls DrvDisableDriver when the driver is to be unloaded. Graphics DDI functions are discussed in depth in Using the Graphics DDI.
GDI makes a large number of objects and services available to the driver. These fall into two categories: user objects and service routines.