WritePrinter 関数

WritePrinter 関数は、指定したプリンターにデータを書き込む必要があることを印刷スプーラーに通知します。

Note

WritePrinter は GDI 印刷のみをサポートしており、XPS 印刷には使用しないでください。 印刷ジョブで XPS または OpenXPS 印刷パスを使用する場合は、 XPS 印刷 API を使用します。 WritePrinter を使用して XPS または OpenXPS 印刷ジョブをスプーラーに送信することはサポートされていないため、結果が不確定になることがあります。

構文

BOOL WritePrinter(
  _In_  HANDLE  hPrinter,
  _In_  LPVOID  pBuf,
  _In_  DWORD   cbBuf,
  _Out_ LPDWORD pcWritten
);

パラメーター

hPrinter [in]

プリンターのハンドル。 プリンター ハンドルを取得するには 、OpenPrinter または AddPrinter 関数を使用します。

pBuf [in]

プリンターに書き込む必要があるデータを含むバイト配列へのポインター。

cbBuf [in]

配列のサイズ (バイト単位)。

pcWritten [out]

プリンターに書き込まれたデータのバイト数を受け取る値へのポインター。

戻り値

関数が成功した場合、戻り値は 0 以外の値になります。

関数が失敗した場合は、0 を返します。

解説

Note

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

印刷ジョブのシーケンスは次のとおりです。

  1. 印刷ジョブを開始するには、 StartDocPrinter を呼び出します。
  2. 各ページを開始するには、 StartPagePrinter を呼び出します。
  3. ページにデータを書き込むには、 WritePrinter を呼び出します。
  4. 各ページを終了するには、 EndPagePrinter を呼び出します。
  5. 必要な数のページに対して 2、3、4 を繰り返します。
  6. 印刷ジョブを終了するには、 EndDocPrinter を呼び出します。

高度なドキュメント (Adobe PDF や Microsoft Word ファイルなど) またはその他のプリンター データ (PCL、PS、HPGL など) がプリンターに直接送信されると、ドキュメントで定義されている印刷設定が Windows の印刷設定よりも優先されます。 StartDocPrinter 呼び出しの pDocInfo パラメーターで渡されたDOC_INFO_1構造体の pDatatype メンバーの値が "RAW" である場合に出力されるドキュメントは、ハードウェアで認識される言語で DEVMODE スタイルの印刷ジョブ設定を完全に記述する必要があります。

Windows XP より前のバージョンの Windows では、スプール ファイル内のページが約 350 MB を超えると、印刷に失敗し、エラー メッセージが送信されないことがあります。 たとえば、これは、大きな EMF ファイルを印刷するときに発生する可能性があります。 Windows XP より前のバージョンの Windows のページ サイズの制限は、使用可能な仮想メモリの量、プロセスの呼び出しによって割り当てられたメモリの量、プロセス ヒープ内の断片化の量など、多くの要因によって異なります。 Windows XP 以降のバージョンの Windows では、EMF ファイルのサイズは 2 GB 以下である必要があります。 プリンター対応の PDL など、EMF 以外のデータを書き込むには WritePrinter を使用する場合、ファイルのサイズは使用可能なディスク領域によってのみ制限されます。

この関数を使用するサンプル プログラムについては、「 方法: GDI Print API を使用して印刷する」を参照してください。

要件

要件
サポートされている最小のクライアント
Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows 2000 Server [デスクトップ アプリのみ]
ヘッダー
Winspool.h (Windows.h を含む)
ライブラリ
Winspool.lib
[DLL]
Spoolss.dll

関連項目

印刷

印刷スプーラー API 関数

EndDocPrinter

EndPagePrinter

OpenPrinter

StartDocPrinter

StartPagePrinter

WritePrinter