Functions defined by printer graphics DLLs
Important
The modern print platform is Windows' preferred means of communicating with printers. We recommend that you use Microsoft's IPP inbox class driver, along with Print Support Apps (PSA), to customize the print experience in Windows 10 and 11 for printer device development.
For more information, see Modern print platform and the Print support app design guide.
Like all graphics drivers, printer graphics DLLs are responsible for defining the following graphics DDI functions. Following DrvEnableDriver, the initial driver entry point, the remaining functions are listed in alphabetical order. Note that because GDI calls DrvEnableDriver by name, its name appears in bold. GDI calls all other display driver functions by way of an array of function pointers that DrvEnableDriver returns.
Function name | Description |
---|---|
DrvEnableDriver | Allows the driver to initialize itself and return pointers to supported graphics DDI functions. |
DrvCompletePDEV | Provides the driver with a GDI handle to a device instance. |
DrvDisableDriver | (Optional) Allows the driver to perform cleanup operations before being unloaded. |
DrvDisablePDEV | Allows the driver to remove device instance-specific information. |
DrvDisableSurface | Allows the driver to remove a drawing surface. |
DrvEnablePDEV | Allows the driver to provide GDI with physical device characteristics and to initialize device instance-specific information. |
DrvEnableSurface | Allows the driver to create a drawing surface. |
DrvQueryDeviceSupport | (Optional) Returns requested device-specific information. |
DrvQueryDriverInfo | (Optional) Returns requested driver-specific information. |
Printer graphics DLLs are also responsible for defining the following print-specific graphics DDI functions, which are called at certain points during the rendering of a print job.
Function | When called |
---|---|
DrvEndDoc | When GDI has finished sending a document to the driver for rendering. |
DrvNextBand | (Optional) When GDI has finished drawing a band for a physical page, so the driver can send the band to the printer. |
DrvQueryPerBandInfo | (Optional) Before GDI begins drawing a band for a physical page, so the driver can supply GDI with band-specific information. |
DrvSendPage | When GDI has finished drawing a physical page, so the driver can send the page to the printer. |
DrvStartBanding | (Optional) When GDI is ready to start sending bands of a physical page to the driver for rendering. |
DrvStartDoc | When GDI is ready to start sending a document to the driver for rendering. |
DrvStartPage | When GDI is ready to start sending a document page to the driver for rendering. |
Typically, a printer graphics DLL also defines whatever additional graphics DDI functions are necessary to accomplish print job rendering. The number and type of functions defined depends on:
Whether the driver supports use of GDI-managed or device-managed drawing surfaces (or both). For more information, see Surface Types.
The extent to which drawing operations can be handled by GDI instead of being performed by the driver itself. For more information, see Using the Graphics DDI.
All functions defined by printer graphics DLLs are called by GDI's kernel-mode graphics rendering engine (GRE).
The DrvEnableDriver and DrvQueryDriverInfo functions are exported by the graphics DLL. The addresses of all other supported graphics DDI functions are placed in a table that is returned by the DrvEnableDriver function.