このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
Microsoft Edge をダウンロードする
Internet Explorer と Microsoft Edge の詳細情報
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 を返します。
これはブロック関数または同期関数であり、すぐには返されない場合があります。 この関数が返す速度は、ネットワークの状態、プリント サーバーの構成、アプリケーションの記述時に予測が困難なプリンター ドライバーの実装要因などの実行時の要因によって異なります。 ユーザー インターフェイスとの対話を管理するスレッドからこの関数を呼び出すと、アプリケーションが応答しないように見える可能性があります。
印刷ジョブのシーケンスは次のとおりです。
印刷ジョブを開始するには、 StartDocPrinter を呼び出します。
各ページを開始するには、 StartPagePrinter を呼び出します。
ページにデータを書き込むには、 WritePrinter を呼び出します。
各ページを終了するには、 EndPagePrinter を呼び出します。
必要な数のページに対して 2、3、4 を繰り返します。
印刷ジョブを終了するには、 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 を使用して印刷する」を参照してください。