XPS 筛选器
重要
新式打印平台是 Windows 与打印机通信的首选方式。 建议使用 Microsoft 的 IPP 收件箱类驱动程序以及打印支持应用 (PSA) 来自定义 Windows 10 和 11 中的打印体验,以便进行打印机设备开发。
有关详细信息,请参阅新式打印平台和打印支持应用设计指南。
对于 XPS 打印路径,筛选器是驱动程序为打印机准备打印数据的主要方式。 在 Windows Vista 之前的 Microsoft Windows 操作系统版本中,打印处理器和呈现模块负责筛选器的工作。
XPS 筛选器是一个 DLL,它会导出 DllGetClassObject 和 DllCanUnloadNow 函数。 在加载和卸载 XPS 筛选器 DLL 时,筛选器管道管理器会调用这些函数。 加载筛选器 DLL 后,筛选器管道管理器会执行以下操作:
调用 DllGetClassObject 以获取筛选器对象的 IClassFactory 接口引用。
调用 IClassFactory::CreateInstance 方法,以便获取筛选器对象的 IPrintPipelineFilter 接口引用。
调用 IPrintPipelineFilter::InitializeFilter 方法以便初始化筛选器对象。
在卸载筛选器 DLL 之前,筛选器管道管理器会调用 DllCanUnloadNow。
在某些较早的 XPS 筛选器中,DllGetClassObject 函数检索的是筛选器的 IPrintPipelineFilter 接口的引用,而不是 IClassFactory 接口的引用。 为了实现向后兼容性,Windows Vista 及其后续版本中的筛选器管道管理器将继续支持这些筛选器。 不过,对于新的筛选器设计,DllGetClassObject 应检索对 IClassFactory 接口的引用。
XPS 筛选器使打印子系统更加强大,因为筛选器是在不同于后台处理程序的进程中运行的。 此“沙盒”既能防止故障,又能让插件以不同的安全权限运行。 XPSDrv 还能让你在不同打印机系列中重复使用筛选器,从而降低成本并缩短开发时间。
为了获得最大的灵活性和重用性,每个筛选器都应执行特定的打印处理功能。 例如,一个筛选器只应用水印,而另一个筛选器只进行核算。
有关筛选器管道管理器的详细信息,请参阅 XPSDrv 呈现模块。
有关实现筛选器的详细信息,请参阅实现 XPS 筛选器。
有关打印筛选器中异步通知的详细信息,请参阅打印筛选器中的异步通知。
必须使用筛选器管道配置文件来配置筛选器。
有关如何调试打印筛选器管道服务的信息,请参阅将调试器附加到打印筛选器管道服务。
在 Windows 7 中,XPS 筛选器可使用 XPS 光栅化服务 将 XPS 文档中的固定页面转换为位图。
有关 Windows 在 XPS 光栅化中使用 GPU 加速的方式,请参阅 XPSRas GPU 使用情况决策树。