替换驱动程序提供的属性表页

重要

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

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

IPrintCoreUI2 COM 接口提供了在 Windows XP 及更高版本的 Windows 操作系统上运行的 Pscript5 UI 插件在打算完全替换核心驱动程序的标准 UI 页面时必须使用的四种方法。 (术语核心驱动程序是指 Unidrv 或 Pscript5 打印机驱动程序。)这些方法如下所示:

IPrintCoreUI2::EnumConstrainedOptions

IPrintCoreUI2::GetOptions

IPrintCoreUI2::SetOptions

IPrintCoreUI2::WhyConstrained

只有在执行 UI 插件的 IPrintOemUI::DocumentPropertySheetsIPrintOemUI::DevicePropertySheets 方法及其属性表回调例程时,才支持这些方法。 UI 插件支持这些方法来显示自己的用户界面。 如果不支持,这些方法将返回 E_NOTIMPL。

核心驱动程序在两种情况下显示自己的属性表 UI - 对于DrvDocumentPropertySheets,以及对于DrvDevicePropertySheets。 第一种方法显示仅适用于文档的属性(文档粘滞属性),而第二种方法显示应用于设备的属性(设备或打印机粘滞属性)。

核心驱动程序会记住它处理的属性表的类型(因此也会记住模式 - 文档粘滞或打印机粘滞)。 核心驱动程序将状态信息保存在为 UI 实例创建的结构(OEMUIOBJ 结构)中。 当核心驱动程序调用插件的接口方法时,它会传递一个指向 OEMUIOBJ 结构的指针,这样当插件从 IPrintCoreUI2::EnumConstrainedOptionsIPrintCoreUI2::GetOptionsIPrintCoreUI2::SetOptionsIPrintCoreUI2::WhyConstrained 回调核心驱动程序时,这些方法会将指针传递回核心驱动程序,然后核心驱动程序能够确定模式。

对于 IPrintCoreUI2::EnumConstrainedOptionsIPrintCoreUI2::SetOptionsIPrintCoreUI2::WhyConstrained,在执行 IPrintOemUI::DocumentPropertySheets 或其属性表回调例程期间仅支持文档粘滞功能,在执行 IPrintOemUI::DevicePropertySheets 或其属性表回调例程时仅支持打印机粘滞功能。 对于 IPrintCoreUI2::SetOptions,任何粘性与当前粘性模式不匹配的功能都应该被忽略。 当对粘性与当前粘滞模式不匹配的功能调用 IPrintCoreUI2::EnumConstrainedOptionsIPrintCoreUI2::WhyConstrained 时,该方法应返回 E_INVALIDARG。

对于 IPrintCoreUI2::GetOptions,在文档粘滞模式下(即 IPrintOemUI::DocumentPropertySheets 或其属性表回调例程正在运行时)支持文档粘滞和打印机粘滞功能;但在打印机粘滞模式(IPrintOemUI::DevicePropertySheets 或其属性表回调例程正在运行时)下仅支持打印机粘滞功能。