IPrintTicketProvider::ConvertPrintTicketToDevMode 方法 (prdrvcom.h)

IPrintTicketProvider::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

指向输入打印票证的指针。 IPrintTicketProvider::ConvertPrintTicketToDevMode 将输入打印票证中的设置转换为 DEVMODEW 结构中的字段。

[in] cbDevmodeIn

输入 DEVMODEW 结构的大小(以字节为单位)。 此大小包括 DEVMODEW 结构的公共和专用部分。

[in] pDevmodeIn

指向包含默认设置的输入 DEVMODEW 结构的指针。 DEVMODEW 结构可以是打印队列默认 DEVMODEW 结构,也可以是用户默认的 DEVMODEW 结构。 由于此参数可以表示用户默认 的 DEVMODEW 结构,因此 OEM 插件提供程序必须验证该结构中的数据。 用户默认 DEVMODEW 结构可能对特定驱动程序无效,例如,当打印队列的驱动程序更改或升级时。

[out] pcbDevmodeOut

指向变量的指针,该变量包含输出 DEVMODEW 结构的大小(以字节为单位)。

[out] ppDevmodeOut

指向包含输出 DEVMODEW 结构的地址的变量的指针。 当 IPrintTicketProvider::ConvertPrintTicketToDevMode 成功返回时,输出 DEVMODEW 结构的成员将重置以反映打印票证中的设置。 有关更多信息,请参见下面的“备注”部分。

返回值

如果操作成功,IPrintTicketProvider::ConvertPrintTicketToDevMode 应返回S_OK。 否则,此方法应返回标准 COM 错误代码。

注解

核心驱动程序先调用 IPrintTicketProvider::ConvertPrintTicketToDevMode 方法,然后再执行打印票证到 DEVMODEW 结构的转换。 在调用此方法时,核心驱动程序会传递已完全填充的输入打印票证和设置为默认值的 DEVMODEW 结构。 在转换中,插件必须撤消在上一次从 DEVMODEW 结构转换为打印票证期间对打印票证所做的任何更改。 如果在上一次转换期间,插件将某个功能从专用命名空间移到了公共命名空间,则插件必须以适合核心驱动程序的格式将该功能还原到专用命名空间,即,将功能还原到核心驱动程序之前在 IPrintOemPrintTicketProvider 中提供给插件的打印票证中的格式::ConvertDevModeToPrintTicket 方法。 此还原是必要的,以便核心驱动程序可以识别打印票证中的功能,并在核心驱动程序 的 DEVMODEW 结构的专用部分反映其设置,而核心驱动程序执行打印票证到 DEVMODEW 转换的一部分。

在系统将打印票证转换回 DEVMODEW 结构之前,首先加载默认 的 DEVMODEW。 然后,系统调用提供程序的 IPrintTicketProvider::BindPrinter 方法。 然后,此方法应从打印票证中读取它支持的所有设置,并将这些设置放入 DEVMODEW 结构中。 请注意,并非所有功能都必须表示,并且通常存在的 Option 实例可能不包含提供程序通常会填充的所有评分属性实例。 如果提供程序在从打印票证转换为 DEVMODEW 期间对系统填充的设置进行了任何更改,则提供程序应在此方法中执行该更改的相反操作。 提供程序返回后,系统将覆盖打印票证中表示但提供程序未显式禁用的任何公共 DEVMODEW 设置。

要求

要求
Header prdrvcom.h (包括 Prdrvcom.h)

另请参阅

IPrintTicketProvider

IPrintTicketProvider::ConvertDevModeToPrintTicket