次の方法で共有


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

印刷チケットへのポインター。 ストリームのシーク位置は、印刷チケットコンテンツの先頭にある必要があります。

PTMergeAndValidatePrintTicket は、マージする前に 、印刷スキーマ フレームワーク に対してベース チケットを検証します。
 

[in] pDeltaTicket

印刷チケットへのポインター。 ストリームのシーク位置は、印刷チケットコンテンツの先頭にある必要があります。 この パラメーターには NULL を渡すことができます。 「解説」を参照してください。

PTMergeAndValidatePrintTicket は、マージする前に 、印刷スキーマ フレームワーク に対してデルタ チケットを検証します。
 

[in] scope

pDeltaTicketpResultTicket のスコープが 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 エラー コードの詳細については、「エラー処理」を参照してください。

注釈

メモ これはブロック関数または同期関数であり、すぐには返されない可能性があります。 この関数が返す速度は、ネットワークの状態、プリント サーバーの構成、プリンター ドライバーの実装などの実行時の要因によって異なります。これは、アプリケーションの作成時に予測が困難な要因です。 ユーザー インターフェイスとの対話を管理するスレッドからこの関数を呼び出すと、アプリケーションが応答しなくなる可能性があります。
 
hProvider は、この関数に使用されるスレッドと同じスレッドで開かれたハンドルである必要があります。

この関数は、2 つの方法で検証します。最初に 、印刷スキーマ フレームワークに対して両方の入力チケットを検証し、 pbstrErrorMessage でエラーを報告します。 次に、プリンター ドライバーとマージされた印刷チケットの実行可能性を確認します。 マージされたチケットがプリンターでサポートされていない機能を要求した場合、使用できない設定が置き換えられ、プリンター ドライバーによって使用する代替設定が決定されます。 通常、プリンター ドライバーは、ユーザーの既定の印刷チケット設定を使用します。 pBaseTicket が代替値のソースとして指しているのと同じ印刷チケットがプリンター ドライバーで使用されていない場合は、pResultTicket が両方の入力印刷チケットと一部の設定で異なる可能性があります。

通常、 pBaseTicket には、ジョブ、ドキュメント、ページの設定の全範囲が含まれています。 通常、ユーザーの既定値またはデバイスの既定の印刷チケットは 、pBaseTicket に使用されます。

pDeltaTicketNULL の場合、メソッドは pBaseTicket を検証し、その実行可能性を確認し、pResultTicket が指すストリーム内で変更された可能性があります。

スコープ外の pDeltaTicket の値は無視されます。 たとえば、スコープが 1 ページのみの場合、ジョブ全体の設定とドキュメント全体の設定は無視されます。 ジョブ スコープには、ドキュメント スコープとページ スコープが含まれます。 ドキュメント スコープにはページ スコープが含まれます。

スコープ外の設定は、pResultTicket には含まれません。

関数が値を返す場合、 pResultTicket のシーク位置は印刷チケットコンテンツの末尾にあります。 呼び出し元は、データを読み取る前にシーク位置をリセットする必要があります。

関数が戻るときに pbstrErrorMessageNULL でない場合、呼び出し元は SysFreeString で文字列を解放する必要があります。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー prntvpt.h
Library Prntvpt.lib
[DLL] Prntvpt.dll

こちらもご覧ください

印刷スキーマ

印刷スプーラー API 関数

印刷