次の方法で共有


PTConvertPrintTicketToDevMode 関数 (prntvpt.h)

印刷チケットを DEVMODE 構造体に変換します。

構文

HRESULT PTConvertPrintTicketToDevMode(
  [in]  HPTPROVIDER         hProvider,
  [in]  IStream             *pPrintTicket,
        EDefaultDevmodeType baseDevmodeType,
  [in]  EPrintTicketScope   scope,
  [out] ULONG               *pcbDevmode,
  [out] PDEVMODE            *ppDevmode,
  [out] BSTR                *pbstrErrorMessage
);

パラメーター

[in] hProvider

開いている印刷チケット プロバイダーへのハンドル。 このハンドルは、 PTOpenProvider または PTOpenProviderEx 関数によって返されます。

[in] pPrintTicket

印刷チケットの先頭にシーク位置がある IStream へのポインター。

baseDevmodeType

pPrintTicket で DEVMODE に可能なすべての設定が指定されていない場合に、ユーザーの既定の DEVMODE または印刷キューの既定の DEVMODE のどちらを使用して出力 DEVMODE に値を提供するかを示す値

[in] scope

pPrintTicket のスコープを指定する 値。 この値では、1 つのページ、文書全体、または印刷ジョブ内のすべてのドキュメントを指定できます。 指定したスコープ外の pPrintTicket の設定は無視されます。 「解説」を参照してください。

[out] pcbDevmode

DEVMODE のサイズへのポインター (バイト単位)。

[out] ppDevmode

新しく作成された DEVMODE へのポインター。

[out] pbstrErrorMessage

pPrintTicket に関して何が無効であるかを指定する文字列へのポインター。 有効な場合、これは NULL です

戻り値

操作が成功した場合、戻り値はS_OK。

hProvider が別のスレッドで開かれた場合、HRESULT はE_INVALIDARG。

pPrintTicket が無効な場合、HRESULT はE_PRINTTICKET_FORMAT。

それ以外の場合は、 HRESULT で他のエラー コードが返されます。 COM エラー コードの詳細については、「エラー処理」を参照してください。

注釈

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

baseDevmodeType が kUserDefaultDevmode で、ユーザーの既定値が使用できない場合は、デバイスの既定値が使用されます。

返される DEVMODE は、内部的に矛盾している場合や、その中の各設定が個別に実行できる場合でも、ハード プリンター設定と競合している可能性があります。 たとえば、プリンターでオプションのデュプレクサがサポートされているのに 、pPrintTicket が二重化を呼び出す場合、デュプレクサーがインストールされていない場合でも、返される DEVMODE は二重化を呼び出します。 DocumentProperties を使用して、返された DEVMODE を修正します。

返される ppDevmode 内のバッファーは、 PTReleaseMemory を使用して解放する必要があります。

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

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

要件

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

こちらもご覧ください

印刷スキーマ

印刷スプーラー API 関数

印刷