PTMergeAndValidatePrintTicket 函式 (prntvpt.h)
合併兩張列印票證,並傳回有效的可行列印票證。
語法
HRESULT PTMergeAndValidatePrintTicket(
[in] HPTPROVIDER hProvider,
[in] IStream *pBaseTicket,
[in] IStream *pDeltaTicket,
[in] EPrintTicketScope scope,
IStream *pResultTicket,
[out] BSTR *pbstrErrorMessage
);
參數
[in] hProvider
開啟列印票證提供者的句柄。 PTOpenProvider 或 PTOpenProviderEx 函式會傳回此句柄。
[in] pBaseTicket
列印票證的指標。 數據流的搜尋位置必須位於列印票證內容的開頭。
[in] pDeltaTicket
列印票證的指標。 數據流的搜尋位置必須位於列印票證內容的開頭。 NULL 可以傳遞至此參數。 請參閱<備註>。
[in] scope
值,指定 pDeltaTicket 和 pResultTicket 的範圍是單一頁面、整份檔或列印作業中的所有檔。 請參閱<備註>。
pResultTicket
將寫入可行合併票證之數據流的指標。 搜尋位置將會在列印票證的結尾。 請參閱<備註>。
[out] pbstrErrorMessage
字串的指標,指定 pBaseTicket 或 pDeltaTicket 的無效內容。 如果兩者都有效,則為 NULL。 pbstrErrorMessage 中不會回報可行問題。
傳回值
如果作業成功,且合併票證的設定與印表機的功能之間沒有衝突, 則會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 錯誤碼的詳細資訊,請參閱 錯誤處理。
備註
此函式會以兩種方式進行驗證:它會先針對 列印架構架構驗證這兩個輸入票證,並在 pbstrErrorMessage 中報告錯誤。 然後,它會檢查合併列印票證與印表機驅動程式的可行性。 如果合併的票證要求印表機不支援的功能,則會取代不可使用的設定,而且印表機驅動程式會決定要使用的替代設定。 印表機驅動程式通常會使用用戶的預設列印票證設定。 如果印表機驅動程式未使用 pBaseTicket 指向的列印票證做為替代值的來源, 則 pResultTicket 可能會與這兩個輸入印表票證的一些設定不同。
pBaseTicket 通常包含完整的作業、文件和頁面設定。 用戶預設或裝置預設列印票證通常會用於 pBaseTicket。
如果 pDeltaTicket 為 NULL,此方法會驗證 pBaseTicket、檢查其可用性,並在 pResultTicket 所指向的數據流中傳回它,可能經過修改。
忽略超出範圍的pDeltaTicket 值。 例如,如果範圍只是單一頁面,則會忽略全作業設定和全檔設定。 作業範圍包括檔範圍和頁面範圍。 檔範圍包括頁面範圍。
pResultTicket 不包含超出範圍的設定。
當函式傳回值時, pResultTicket 的搜尋位置位於列印票證內容的結尾。 呼叫端負責在讀取數據之前重設搜尋位置。
如果 pbstrErrorMessage 在函式傳回時不是 NULL ,則呼叫端必須使用 SysFreeString 釋放字串。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | prntvpt.h |
程式庫 | Prntvpt.lib |
Dll | Prntvpt.dll |