To support the CLIPOBJ, BRUSHOBJ, and XFORMOBJ, GDI offers several drawing services, listed in the following table, in addition to the GDI simulations described earlier in Hooking versus Punting.
| GDI Draw Service Function | Description |
| EngCreateClip | Allocates a CLIPOBJ for the driver's temporary use. The driver should call EngDeleteClip to delete it when it is no longer needed. |
| EngDeleteClip | Deletes a CLIPOBJ allocated with EngCreateClip. |
| EngBitBlt | GDI simulation for DrvBitBlt. |
| EngCopyBits | GDI simulation for DrvCopyBits. |
| EngStretchBlt | GDI simulation for DrvStretchBlt. |
| EngFillPath | GDI simulation for DrvFillPath. |
| EngStrokeAndFillPath | GDI simulation for DrvStrokeAndFillPath. |
| EngPaint | GDI simulation for DrvPaint. |
| EngStrokePath | GDI simulation for DrvStrokePath. |
| EngLineTo | GDI simulation for DrvLineTo. |
| BRUSHOBJ_pvAllocRbrush | Allocates memory for the driver's realization of a brush. |
| BRUSHOBJ_pvGetRbrush | Returns a pointer to the driver's realization of the brush. Realizes the brush if it has not yet been realized. |
| CLIPOBJ_cEnumStart | Sets parameters for enumeration of the rectangles in all or part of the clipped region. (The region can be enumerated once without this call). |
| CLIPOBJ_bEnum | Retrieves a batch of rectangles from the clip region. |
| CLIPOBJ_ppoGetPath | Can be used to retrieve complicated regions as a path. |
For more information on these functions, refer to the Graphics Driver Reference.