共用方式為


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 設定。

規格需求

需求
標頭 prdrvcom.h (包含 Prdrvcom.h)

另請參閱

IPrintTicketProvider

IPrintTicketProvider::ConvertDevModeToPrintTicket