PTMergeAndValidatePrintTicket 関数 (prntvpt.h)
2 つの印刷チケットをマージし、有効な有効な印刷チケットを返します。
構文
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 のスコープが 1 つのページ、ドキュメント全体、または印刷ジョブ内のすべてのドキュメントであるかどうかを示す値。 「解説」を参照してください。
pResultTicket
実行可能なマージされたチケットが書き込まれるストリームへのポインター。 シーク位置は、印刷チケットの最後になります。 「解説」を参照してください。
[out] pbstrErrorMessage
pBaseTicket または pDeltaTicket について何が無効であるかを指定する文字列へのポインター。 両方が有効な場合、これは NULL です。 pbstrErrorMessage では、実行可能性の問題は報告されません。
戻り値
マージされたチケットの設定とプリンターの機能の間で競合なく操作が成功した場合、 HRESULT はS_PT_NO_CONFLICT。
操作が成功したが、プリンターがサポートしていない機能を要求したために、マージされたチケットを 1 つ以上の設定で変更する必要がある場合、 HRESULT はS_PT_CONFLICT_RESOLVED。 「解説」を参照してください。
hProvider が別のスレッドで開かれた場合、HRESULT はE_INVALIDARG。
pBaseTicket が無効な場合、HRESULT はE_PRINTTICKET_FORMAT。
pDeltaTicket が無効な場合、HRESULT はE_DELTA_PRINTTICKET_FORMAT。
それ以外の場合は、 HRESULT で他のエラー コードが返されます。 COM エラー コードの詳細については、「エラー処理」を参照してください。
注釈
この関数は、2 つの方法で検証します。最初に 、印刷スキーマ フレームワークに対して両方の入力チケットを検証し、 pbstrErrorMessage でエラーを報告します。 次に、プリンター ドライバーとマージされた印刷チケットの実行可能性を確認します。 マージされたチケットがプリンターでサポートされていない機能を要求した場合、使用できない設定が置き換えられ、プリンター ドライバーによって使用する代替設定が決定されます。 通常、プリンター ドライバーは、ユーザーの既定の印刷チケット設定を使用します。 pBaseTicket が代替値のソースとして指しているのと同じ印刷チケットがプリンター ドライバーで使用されていない場合は、pResultTicket が両方の入力印刷チケットと一部の設定で異なる可能性があります。
通常、 pBaseTicket には、ジョブ、ドキュメント、ページの設定の全範囲が含まれています。 通常、ユーザーの既定値またはデバイスの既定の印刷チケットは 、pBaseTicket に使用されます。
pDeltaTicket が NULL の場合、メソッドは pBaseTicket を検証し、その実行可能性を確認し、pResultTicket が指すストリーム内で変更された可能性があります。
スコープ外の pDeltaTicket の値は無視されます。 たとえば、スコープが 1 ページのみの場合、ジョブ全体の設定とドキュメント全体の設定は無視されます。 ジョブ スコープには、ドキュメント スコープとページ スコープが含まれます。 ドキュメント スコープにはページ スコープが含まれます。
スコープ外の設定は、pResultTicket には含まれません。
関数が値を返す場合、 pResultTicket のシーク位置は印刷チケットコンテンツの末尾にあります。 呼び出し元は、データを読み取る前にシーク位置をリセットする必要があります。
関数が戻るときに pbstrErrorMessage が NULL でない場合、呼び出し元は SysFreeString で文字列を解放する必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | prntvpt.h |
Library | Prntvpt.lib |
[DLL] | Prntvpt.dll |