PTConvertPrintTicketToDevMode 函数 (prntvpt.h)
将打印票证转换为 DEVMODE 结构。
语法
HRESULT PTConvertPrintTicketToDevMode(
[in] HPTPROVIDER hProvider,
[in] IStream *pPrintTicket,
EDefaultDevmodeType baseDevmodeType,
[in] EPrintTicketScope scope,
[out] ULONG *pcbDevmode,
[out] PDEVMODE *ppDevmode,
[out] BSTR *pbstrErrorMessage
);
参数
[in] hProvider
打开的打印票证提供程序的句柄。 此句柄由 PTOpenProvider 或 PTOpenProviderEx 函数返回。
[in] pPrintTicket
指向 IStream 的指针,其查找位置位于打印票证的开头。
baseDevmodeType
一个值,该值指示在 pPrintTicket 未指定 DEVMODE 的每个可能设置时,是使用用户的默认 DEVMODE 还是打印队列的默认 DEVMODE 向输出 DEVMODE 提供值。
[in] scope
一个值,该值指定 pPrintTicket 的范围。 此值可以指定打印作业中的单个页面、整个文档或所有文档。 pPrintTicket 中超出指定范围的设置将被忽略。 请参阅“备注”。
[out] pcbDevmode
指向 DEVMODE 大小(以字节为单位)的指针。
[out] ppDevmode
指向新创建的 DEVMODE 的指针。
[out] pbstrErrorMessage
指向字符串的指针,该字符串指定 pPrintTicket 无效的内容(如果有)。 如果有效,则为 NULL。
返回值
如果操作成功,则返回值S_OK。
如果 hProvider 在不同的线程中打开,则 E_INVALIDARG HRESULT 。
如果 pPrintTicket 无效,则 E_PRINTTICKET_FORMAT HRESULT 。
否则, HRESULT 中会返回一些其他错误代码。 有关 COM 错误代码的详细信息,请参阅错误处理。
注解
如果 baseDevmodeType 为 kUserDefaultDevmode,但用户的默认值不可用,则将使用设备的默认值。
返回的 DEVMODE 可能在内部不一致或与硬打印机设置冲突,即使其中的每个设置单独可行。 例如,如果打印机支持可选的双工器,但 pPrintTicket 调用双工,则返回的 DEVMODE 也将调用双工,即使未安装双工器。 使用 DocumentProperties 更正返回的 DEVMODE。
应使用 PTReleaseMemory 释放返回的 ppDevmode 中的缓冲区。
忽略范围之外的 pPrintTicket 的值。 例如,如果范围只有一页,则忽略作业范围的设置和文档范围的设置。 作业范围包括文档范围和页面范围。 文档范围包括页面范围。
如果 pbstrErrorMessage 在函数返回时不 为 NULL ,则调用方必须使用 SysFreeString 释放字符串。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | prntvpt.h |
Library | Prntvpt.lib |
DLL | Prntvpt.dll |