PTMergeAndValidatePrintTicket 函数 (prntvpt.h)
合并两个打印票证并返回一个有效且可行的打印票证。
语法
HRESULT PTMergeAndValidatePrintTicket(
[in] HPTPROVIDER hProvider,
[in] IStream *pBaseTicket,
[in] IStream *pDeltaTicket,
[in] EPrintTicketScope scope,
IStream *pResultTicket,
[out] BSTR *pbstrErrorMessage
);
参数
[in] hProvider
打开的打印票证提供程序的句柄。 此句柄由 PTOpenProvider 或 PTOpenProviderEx 函数返回。
[in] pBaseTicket
指向打印票证的指针。 流的查找位置必须位于打印票证内容的开头。
[in] pDeltaTicket
指向打印票证的指针。 流的查找位置必须位于打印票证内容的开头。 NULL 可以传递给此参数。 请参阅“备注”。
[in] scope
一个 值,该值指定 pDeltaTicket 和 pResultTicket 的范围是打印作业中的单个页面、整个文档还是所有文档。 请参阅“备注”。
pResultTicket
指向将写入可行合并票证的流的指针。 查找位置将位于打印票证的末尾。 请参阅“备注”。
[out] pbstrErrorMessage
指向字符串的指针,指定 pBaseTicket 或 pDeltaTicket 的无效内容(如果有)。 如果两者都有效,则为 NULL。 pbstrErrorMessage 中未报告可行性问题。
返回值
如果操作成功且合并票证的设置与打印机的功能之间没有冲突,则 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 错误代码的详细信息,请参阅错误处理。
注解
此函数通过两种方式进行验证:它首先针对 打印架构框架验证两个输入票证,报告 pbstrErrorMessage 中的错误。 然后,它会使用打印机驱动程序检查合并打印票证的可行性。 如果合并票证请求打印机不支持的功能,将替换不可行的设置,打印机驱动程序将确定要使用的替代设置。 通常,打印机驱动程序使用用户的默认打印票证设置。 如果打印机驱动程序未使用 pBaseTicket 指向的相同打印票证作为替换值的源,则 pResultTicket 在某些设置中可能与这两个输入打印票证不同。
通常, pBaseTicket 包含完整的作业、文档和页面设置。 通常,用户默认打印票证或设备默认打印票证用于 pBaseTicket。
如果 pDeltaTicket 为 NULL,该方法将验证 pBaseTicket,检查其可行性,并在 pResultTicket 指向的流中返回可能修改的 pBaseTicket。
忽略范围之外的 pDeltaTicket 的值。 例如,如果范围只有一页,则忽略作业范围的设置和文档范围的设置。 作业范围包括文档范围和页面范围。 文档范围包括页面范围。
pResultTicket 中不包含范围之外的设置。
当函数返回值时, pResultTicket 的查找位置位于打印票证内容的末尾。 调用方负责在读取数据之前重置搜寻位置。
如果 pbstrErrorMessage 在函数返回时不 为 NULL ,则调用方必须使用 SysFreeString 释放字符串。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | prntvpt.h |
Library | Prntvpt.lib |
DLL | Prntvpt.dll |