V4 Printer Driver Configuration Architecture

Important

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 the Print support app design guide.

The v4 printer driver model supports a greatly simplified configuration layer.

Unlike the case with v3 printer drivers, where the UI was strongly coupled with driver configuration, v4 printer drivers focus on providing PrintTicket, PrintCapabilities, and constraint functionality. A common configuration module, PrintConfig.dll, encapsulates the functionality that was previously available in the UnidrvUI and PS5UI core drivers.

The v4 printer driver model does not employ configuration plug-ins, so most of the device configuration should be expressed in GPD or PPD files. In addition, v4 printer drivers may provide a JavaScript file that supports advanced constraint handling as well as PrintTicket and PrintCapabilities support.

Configuration File Formats

The Generic Printer Description (GPD) and PostScript Printer Description (PPD) file formats are unchanged with v4 printer drivers. Existing GPD and PPD files are compatible, however, all v4 printer drivers must additionally specify the following directives in their GPD or PPD file. These directives prevent the expression of features that are not natively supported by XPSDrv, such as N-up.

File type Required directive Required value
GPD *Include msxpsinc.gpd
PPD *MSIsXPSDriver True

Note

PPD-based drivers must not specify the *Include: msxpsinc.ppd directive as this is known to cause compatibility issues with some applications.

Mapping to the PrintSchema

Mapping features and options into the PrintSchema's namespace is necessary in many cases. The mapping causes the PrintCapabilities documents generated by your driver to be more compatible with standard print UI and applications.

Some features and options are considered to be standard, and are automatically mapped into the PrintSchema's namespace. These features and options are specific and should not be remapped using *PrintSchemaKeywordMap. If not otherwise listed, drivers must use the *PrintSchemaKeywordMap directive on GPD-based drivers, or the *MSPrintSchemaKeywordMap directive on PPD-based drivers.