PTMergeAndValidatePrintTicket 函数 (prntvpt.h)

合并两个打印票证并返回一个有效且可行的打印票证。

语法

HRESULT PTMergeAndValidatePrintTicket(
  [in]  HPTPROVIDER       hProvider,
  [in]  IStream           *pBaseTicket,
  [in]  IStream           *pDeltaTicket,
  [in]  EPrintTicketScope scope,
        IStream           *pResultTicket,
  [out] BSTR              *pbstrErrorMessage
);

参数

[in] hProvider

打开的打印票证提供程序的句柄。 此句柄由 PTOpenProviderPTOpenProviderEx 函数返回。

[in] pBaseTicket

指向打印票证的指针。 流的查找位置必须位于打印票证内容的开头。

注意PTMergeAndValidatePrintTicket 将在合并之前针对 打印架构框架 验证基本票证。
 

[in] pDeltaTicket

指向打印票证的指针。 流的查找位置必须位于打印票证内容的开头。 NULL 可以传递给此参数。 请参阅“备注”。

注意PTMergeAndValidatePrintTicket 将在合并前针对 打印架构框架 验证增量票证。
 

[in] scope

一个 值,该值指定 pDeltaTicketpResultTicket 的范围是打印作业中的单个页面、整个文档还是所有文档。 请参阅“备注”。

pResultTicket

指向将写入可行合并票证的流的指针。 查找位置将位于打印票证的末尾。 请参阅“备注”。

[out] pbstrErrorMessage

指向字符串的指针,指定 pBaseTicket 或 pDeltaTicket 的无效内容(如果有)。 如果两者都有效,则为 NULLpbstrErrorMessage 中未报告可行性问题。

返回值

如果操作成功且合并票证的设置与打印机的功能之间没有冲突,则 HRESULT S_PT_NO_CONFLICT。

如果操作成功,但必须在一个或多个设置中更改合并票证,因为它请求打印机不支持的功能,则 HRESULT 将S_PT_CONFLICT_RESOLVED。 请参阅“备注”。

如果 hProvider 在不同的线程中打开,则 E_INVALIDARG HRESULT

如果 pBaseTicket 无效,则 E_PRINTTICKET_FORMAT HRESULT

如果 pDeltaTicket 无效,则 E_DELTA_PRINTTICKET_FORMAT HRESULT

否则, HRESULT 中会返回一些其他错误代码。 有关 COM 错误代码的详细信息,请参阅错误处理

注解

注意 这是一个阻塞或同步函数,可能不会立即返回。 此函数返回的速度取决于运行时因素(例如网络状态、打印服务器配置和打印机驱动程序实现),这些因素在编写应用程序时难以预测。 从管理与用户界面交互的线程调用此函数可能会使应用程序看起来无响应。
 
hProvider 必须是在与用于此函数的线程相同的线程中打开的句柄。

此函数通过两种方式进行验证:它首先针对 打印架构框架验证两个输入票证,报告 pbstrErrorMessage 中的错误。 然后,它会使用打印机驱动程序检查合并打印票证的可行性。 如果合并票证请求打印机不支持的功能,将替换不可行的设置,打印机驱动程序将确定要使用的替代设置。 通常,打印机驱动程序使用用户的默认打印票证设置。 如果打印机驱动程序未使用 pBaseTicket 指向的相同打印票证作为替换值的源,则 pResultTicket 在某些设置中可能与这两个输入打印票证不同。

通常, pBaseTicket 包含完整的作业、文档和页面设置。 通常,用户默认打印票证或设备默认打印票证用于 pBaseTicket

如果 pDeltaTicketNULL,该方法将验证 pBaseTicket,检查其可行性,并在 pResultTicket 指向的流中返回可能修改的 pBaseTicket。

忽略范围之外的 pDeltaTicket 的值。 例如,如果范围只有一页,则忽略作业范围的设置和文档范围的设置。 作业范围包括文档范围和页面范围。 文档范围包括页面范围。

pResultTicket 中不包含范围之外的设置。

当函数返回值时, pResultTicket 的查找位置位于打印票证内容的末尾。 调用方负责在读取数据之前重置搜寻位置。

如果 pbstrErrorMessage 在函数返回时不 为 NULL ,则调用方必须使用 SysFreeString 释放字符串。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 prntvpt.h
Library Prntvpt.lib
DLL Prntvpt.dll

另请参阅

打印架构

打印后台处理程序 API 函数

打印