修改驱动程序提供的属性表页

重要

新式打印平台是 Windows 与打印机通信的首选方式。 建议使用 Microsoft 的 IPP 收件箱类驱动程序以及打印支持应用 (PSA) 来自定义 Windows 10 和 11 中的打印体验,以便进行打印机设备开发。

有关详细信息,请参阅新式打印平台打印支持应用设计指南

UI 插件可以通过实现 IPrintOemUI::CommonUIProp 方法和回调函数来修改 Unidrv 提供的或 Pscript5 提供的属性表页。

UI 插件使用 IPrintOemUI::CommonUIProp 方法指定一组选项项,CPSUI 可以在打印机属性表的设备设置页或文档属性表的布局纸张/质量高级页面中添加、删除或替换这些选项项。

回调函数类型为 OEMCUIPCALLBACK,用于处理用户对自定义选项项的修改。

添加选项项

UI 插件必须通过将新选项项放在驱动程序提供的 OPTITEM 结构数组中来描述新选项项。 驱动程序的打印机接口 DLL 调用 UI 插件的 IPrintOemUI::CommonUIProp 方法两次。 第一次调用该方法时,它应该返回所需 OPTITEM 结构的数量。 驱动程序为 OPTITEM 数组分配空间,并以 OEMCUIPPARAM 结构描述该数组。 驱动程序再次调用 IPrintOemUI::CommonUIProp,提供 OEMCUIPPARAM 结构的地址,因此该方法可以加载带有选项描述的 OPTITEM 结构。

删除选项项

若要从 Unidrv 或 Pscript5 提供的属性表页中删除选项,UI 插件的 IPrintOemUI::CommonUIProp 方法可以遍历由 OEMCUIPPARAM 结构指向的 OPTITEM 结构的数组。 对于要从属性表中删除的每个选项,可以设置 OPTITEM 结构的 OPTIF_HIDE 标志。 (请注意,这实际上并没有删除该选项;它对用户隐藏了该选项,因此用户无法更改其默认值。)

替换选项项

若要替换 Unidrv 或 Pscript 提供的属性表页中的选项,应按照前面的删除选项项一节中显示的说明删除现有选项项,然后按照前面的添加选项项部分下的说明创建一个新的选项项来替换旧的选项项。

处理对自定义选项值的修改

为了处理用户对自定义选项项的修改,必须至少提供一个回调函数。 可以指定单个回调函数来处理文档属性表和打印机属性表的选项,也可以为每个函数指定单独的函数。 这些回调的类型为 OEMCUIPCALLBACK

回调函数是通过将其地址放置在 OEMCUIPPARAM 结构中来指定的。 UI 插件接收此结构的地址作为其 IPrintOemUI::CommonUIProp 方法的输入。

当用户打开打印机属性表或文档属性表并修改选项时,CPSUI 将调用打印机驱动程序的打印机接口 DLL。 此 DLL 处理其自己的 OPTITEM 结构中包含的选项值。 然后,对于每个 UI 插件,打印机接口 DLL 调用 OEMCUIPCALLBACK 类型的回调函数,该函数之前由 IPrintOemUI::CommonUIProp 指定。