Windows Driver Kit: Print Devices
XPS Filters

For the XPS print path, filters are the primary way that a driver prepares print data for the printer. In versions of the Microsoft Windows operating system before Windows Vista, print processors and rendering modules did the work of filters.

An XPS filter is a DLL that exports Aa506195.internet_link_sm(en-us,MSDN.10).gifDllGetClassObject and Aa506195.internet_link_sm(en-us,MSDN.10).gifDllCanUnloadNow functions. The filter pipeline manager calls these functions when it loads and unloads the XPS filter DLL. After loading the filter DLL, the filter pipeline manager does the following:

Before unloading the filter DLL, the filter pipeline manager calls DllCanUnloadNow.

Note  In some older XPS filters, the DllGetClassObject function retrieves a reference to the filter's IPrintPipelineFilter interface instead of to an IClassFactory interface. For backward compatibility, the filter pipeline manager in Windows Vista and later versions of Windows will continue to support these filters. However, for new filter designs, DllGetClassObject should retrieve a reference to an IClassFactory interface.

XPS filters make the printing subsystem more robust, because the filters run in a process different from the spooler. This "sandboxing" both protects against failures and allows a plug-in to run with different security permissions. XPSDrv also enables you to reuse filters across families of printers to lower costs and development time.

For maximum flexibility and reuse, each filter should perform a specific print processing function. For example, one filter would only apply a watermark, while another would only perform accounting.

Windows Vista does not include any filters in-box, but the following sample filters are included in the Windows Driver Kit (WDK) in the \Src\Print\Xpsdrvsmpl\Src\Filters folder:

  • Booklet
  • Color conversion
  • Nup
  • Page scaling
  • Watermark

For more information about the filter pipeline manager, see XPSDrv Render Module.

For more information about implementing filters, see Implementing XPS Filters.

For more information about asynchronous notifications in print filters, see Asynchronous Notifications in Print Filters.

You must configure filters by using the filter pipeline configuration file.

In Windows 7, XPS filters can use the XPS rasterization service to convert fixed pages in XPS documents to bitmaps.

For more information about XPS filters, see the following white papers at the Aa506195.internet_link_sm(en-us,MSDN.10).gifWHDC Web site:


Send feedback on this topic
Built on November 19, 2009
Page view tracker