Most printer drivers maintain and manipulate device objects. Device objects are structures that represent pens and brushes that the device supports.
To determine what device objects are available, GDI calls the EnumObj function and expects the driver to enumerate all the pens and brushes that a device supports. The function translates physical descriptions of the objects into logical descriptions and returns these descriptions to GDI. All logical objects created this way must be unique, that is, when translated into physical objects and used for drawing, they should produce different output.
The driver enumerates all the styles and colors of pens and brushes. Since pens are defined to be only pure colors, only logical colors that translate to pure physical colors will be enumerated. For devices that support many colors, only a subset of all the colors will be enumerated.