IPrintOemPrintTicketProvider::ConvertPrintTicketToDevMode 方法 (prcomoem.h)

IPrintOemPrintTicketProvider::ConvertPrintTicketToDevMode 方法将打印票证转换为 DEVMODEW 结构。

语法

HRESULT ConvertPrintTicketToDevMode(
  [in]      IXMLDOMDocument2 *pPrintTicket,
  [in]      ULONG            cbDevmode,
  [in, out] PDEVMODE         pDevmode,
  [in]      ULONG            cbDrvPrivateSize,
  [in]      PVOID            pPrivateDevmode
);

参数

[in] pPrintTicket

指向输入打印票证的指针。

[in] cbDevmode

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

[in, out] pDevmode

指向输入 DEVMODEW 结构的指针。 当 IPrintOemPrintTicketProvider::ConvertPrintTicketToDevMode 返回时,插件的专用 DEVMODEW 结构将包含从打印票证获取的信息。

[in] cbDrvPrivateSize

插件的专用 DEVMODEW 结构的大小(以字节为单位)。

[in] pPrivateDevmode

指向插件的专用 DEVMODEW 结构的指针。

返回值

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

言论

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

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

要求

要求 价值
目标平台 桌面
标头 prcomoem.h (include Prcomoem.h)

另请参阅

IPrintOemPrintTicketProvider

IPrintOemPrintTicketProvider::ConvertDevModeToPrintTicket