共用方式為


PTMergeAndValidatePrintTicket 函式 (prntvpt.h)

合併兩張列印票證,並傳回有效的可行列印票證。

語法

HRESULT PTMergeAndValidatePrintTicket(
  [in]  HPTPROVIDER       hProvider,
  [in]  IStream           *pBaseTicket,
  [in]  IStream           *pDeltaTicket,
  [in]  EPrintTicketScope scope,
        IStream           *pResultTicket,
  [out] BSTR              *pbstrErrorMessage
);

參數

[in] hProvider

開啟列印票證提供者的句柄。 PTOpenProviderPTOpenProviderEx 函式會傳回此句柄。

[in] pBaseTicket

列印票證的指標。 數據流的搜尋位置必須位於列印票證內容的開頭。

注意PTMergeAndValidatePrintTicket 會在合併之前,先根據 列印架構架構 驗證基底票證。
 

[in] pDeltaTicket

列印票證的指標。 數據流的搜尋位置必須位於列印票證內容的開頭。 NULL 可以傳遞至此參數。 請參閱<備註>。

注意PTMergeAndValidatePrintTicket 會在合併之前驗證 列印架構架構 的差異票證。
 

[in] scope

值,指定 pDeltaTicketpResultTicket 的範圍是單一頁面、整份檔或列印作業中的所有檔。 請參閱<備註>。

pResultTicket

將寫入可行合併票證之數據流的指標。 搜尋位置將會在列印票證的結尾。 請參閱<備註>。

[out] pbstrErrorMessage

字串的指標,指定 pBaseTicketpDeltaTicket 的無效內容。 如果兩者都有效,則為 NULLpbstrErrorMessage 中不會回報可行問題。

傳回值

如果作業成功,且合併票證的設定與印表機的功能之間沒有衝突, 則會S_PT_NO_CONFLICT HRESULT

如果作業成功,但合併的票證必須在一或多個設定中變更,因為它要求印表機不支援的功能, 則會S_PT_CONFLICT_RESOLVED HRESULT 。 請參閱<備註>。

如果在不同的線程中開啟 hProvider則 HRESULT 會E_INVALIDARG。

如果 pBaseTicket 無效, 則 HRESULT 會E_PRINTTICKET_FORMAT。

如果 pDeltaTicket 無效, 則 HRESULT 會E_DELTA_PRINTTICKET_FORMAT。

否則, HRESULT 中會傳回一些其他錯誤碼。 如需 COM 錯誤碼的詳細資訊,請參閱 錯誤處理

備註

注意 這是封鎖或同步函式,可能不會立即傳回。 此函式傳回的速度取決於運行時間因素,例如網路狀態、列印伺服器設定和印表機驅動程序實作—撰寫應用程式時難以預測的因素。 從管理與使用者介面互動的線程呼叫此函式,可能會使應用程式看起來沒有回應。
 
hProvider 必須是在與用於此函式之線程相同的線程中開啟的句柄。

此函式會以兩種方式進行驗證:它會先針對 列印架構架構驗證這兩個輸入票證,並在 pbstrErrorMessage 中報告錯誤。 然後,它會檢查合併列印票證與印表機驅動程式的可行性。 如果合併的票證要求印表機不支援的功能,則會取代不可使用的設定,而且印表機驅動程式會決定要使用的替代設定。 印表機驅動程式通常會使用用戶的預設列印票證設定。 如果印表機驅動程式未使用 pBaseTicket 指向的列印票證做為替代值的來源, 則 pResultTicket 可能會與這兩個輸入印表票證的一些設定不同。

pBaseTicket 通常包含完整的作業、文件和頁面設定。 用戶預設或裝置預設列印票證通常會用於 pBaseTicket

如果 pDeltaTicketNULL,此方法會驗證 pBaseTicket、檢查其可用性,並在 pResultTicket 所指向的數據流中傳回它,可能經過修改。

忽略超出範圍的pDeltaTicket 值。 例如,如果範圍只是單一頁面,則會忽略全作業設定和全檔設定。 作業範圍包括檔範圍和頁面範圍。 檔範圍包括頁面範圍。

pResultTicket 不包含超出範圍的設定。

當函式傳回值時, pResultTicket 的搜尋位置位於列印票證內容的結尾。 呼叫端負責在讀取數據之前重設搜尋位置。

如果 pbstrErrorMessage 在函式傳回時不是 NULL ,則呼叫端必須使用 SysFreeString 釋放字串。

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
目標平台 Windows
標頭 prntvpt.h
程式庫 Prntvpt.lib
Dll Prntvpt.dll

另請參閱

列印架構

列印多工緩衝處理器 API 函式

列印