Each driver has a global driver section comprising drive program code and
global driver data, both defining driver operations associated with a
corresponding class of devices. Each device has an associated driver
instantiation comprising local driver data, having an internal pointer to
the global driver section of the instantiated driver, and possibly at
least one external pointer to another driver instantiation. A device
registry forms a list of device registry entries, each corresponding to a
respective one of the drive instantiations. Driveer client code may
perform operations on a given device by fetching in the device registry a
pointer to the driver instantiation associated with the given device, and
then use operations provided by the associated driver instantiation,
directly or using further operations reached in other driver
instantiations by using iteratively the external printer.