IPrintTicketProvider2::ConvertPrintTicketToDevMode 方法 (prdrvcom.h)
IPrintTicketProvider2::ConvertPrintTicketToDevMode 方法将打印票证转换为 DEVMODEW 结构。
语法
HRESULT ConvertPrintTicketToDevMode(
[in] IN IXMLDOMDocument2 *pPrintTicket,
[in] IN ULONG cbDevmodeIn,
[in] IN PDEVMODE pDevmodeIn,
[out] OUT ULONG *pcbDevmodeOut,
[out] OUT PDEVMODE *ppDevmodeOut
);
参数
[in] pPrintTicket
指向输入打印票证的指针。 IPrintTicketProvider2::ConvertPrintTicketToDevMode 将输入打印票证中的设置转换为 DEVMODEW 结构中的字段。
[in] cbDevmodeIn
输入 DEVMODEW 结构的大小(以字节为单位)。 此大小包括 DEVMODEW 结构的公用和专用部分。
[in] pDevmodeIn
指向包含默认设置的输入 DEVMODEW 结构的指针。 DEVMODEW 结构可以是打印队列默认 DEVMODEW 结构,也可以是用户默认 DEVMODEW 结构。 由于此参数可以表示用户默认 DEVMODEW 结构,OEM 插件提供程序必须验证该结构中的数据。 用户默认 DEVMODEW 结构可能对特定驱动程序无效,例如,当打印队列的驱动程序更改或升级时。
[out] pcbDevmodeOut
指向一个变量的指针,该变量包含输出 DEVMODEW 结构的大小(以字节为单位)。
[out] ppDevmodeOut
指向包含输出 DEVMODEW 结构的地址的变量的指针。 IPrintTicketProvider2::ConvertPrintTicketToDevMode 成功返回时,将重置输出 DEVMODEW 结构的成员以反映打印票证中的设置。 有关详细信息,请参阅以下“备注”部分。
返回值
IPrintTicketProvider2::ConvertPrintTicketToDevMode 如果作成功,应返回 S_OK。 否则,此方法应返回标准 COM 错误代码。
言论
核心驱动程序先调用 IPrintTicketProvider2::ConvertPrintTicketToDevMode 方法,然后再执行打印票证转换为 DEVMODEW 结构的一部分。 在调用此方法时,核心驱动程序传递一个完全填充的输入打印票证,以及设置为默认值的 DEVMODEW 结构。 在转换中,插件必须在之前从 DEVMODEW 结构转换为打印票证的过程中撤消对打印票证所做的任何更改。 如果在此之前转换期间,插件将功能从专用命名空间移动到公共命名空间,则插件必须以适合核心驱动程序的格式将该功能还原到专用命名空间,即核心驱动程序以前将该功能放置在提供给 IPrintOemPrintTicketProvider 中的插件的打印票证中:ConvertDevModeToPrintTicket 方法。 此还原是必需的,以便核心驱动程序可以识别打印票证中的功能,并在核心驱动程序的 DEVMODEW 结构的私有部分中反映其设置,而核心驱动程序执行其部分打印票证到DEVMODEW 转换。
在系统将打印票证转换回 DEVMODEW 结构之前,它会首先加载默认 DEVMODEW。 然后,系统会调用提供程序的 IPrintTicketProvider2::BindPrinter 方法。 然后,此方法应读取打印票证支持的所有设置,并将这些设置置于 DEVMODEW 结构中。 请注意,并非所有功能都必须表示,而且通常存在的 Option 实例可能不包含提供程序通常会填充的所有评分属性实例。 如果提供程序在从打印票证转换到 DEVMODEW期间对系统填充的设置进行任何更改,则提供程序应在此方法中执行该更改的反向作。 提供程序返回后,系统将覆盖在打印票证中表示但提供程序未显式禁用的任何公共 DEVMODEW 设置。
要求
要求 | 价值 |
---|---|
标头 | prdrvcom.h (包括 Prdrvcom.h) |