印刷ジョブを処理する

スプーラーは、印刷ジョブを印刷プロセッサに送信する準備ができると、印刷プロセッサの OpenPrintProcessor 関数を呼び出します。 この関数は、初期化アクティビティを実行し、ハンドルを返します。

その後、スプーラーは PrintDocumentOnPrintProcessor を呼び出すことができます。これは、データ ストリームを入力形式から出力形式に変換し、変換されたストリームをスプーラーに返す印刷プロセッサ関数です。

入力形式が NT ベースのオペレーティング システムの EMF の場合、PrintDocumentOnPrintProcessor 関数は、「印刷プロセッサでの GDI 関数の使用」に記載されている関数を使用して、EMF レコードの再生を制御できます。 これらの関数は、印刷プロセッサとプリンター ドライバーの間のインターフェイスを提供します。 このインターフェイスを使用すると、印刷プロセッサはプリンター ページの物理的なレイアウトを制御でき、1 つの物理ページに複数のドキュメント ページを印刷する ("N-up" 印刷)、ページを逆の順序で印刷する、各ページを複数部印刷するなどの機能の実装が容易になります。

印刷プロセッサの出力データ ストリームはスプーラーに返す必要があります。 通常、データ変換でプリンター ドライバーのプリンター グラフィックス DLL との対話が必要な場合 (EMF 入力データの場合と同様)、グラフィックス DLL は、EngWritePrinter を呼び出して、ストリームをスプーラーに返します。 一方、変換でプリンター グラフィックス DLL が呼び出されない場合 (RAW 入力データの場合と同様)、印刷プロセッサは WritePrinter を呼び出します。

PrintDocumentOnPrintProcessor 関数は、スプーラーから印刷プロセッサの ControlPrintProcessor 関数への非同期呼び出しによって中断できます。 この関数は、アプリケーションで印刷ジョブを一時停止、再開、または取り消す機能を実装します。

PrintDocumentOnPrintProcessor が変換を完了してデータ ストリームを返した後、スプーラーは印刷プロセッサの ClosePrintProcessor 関数を呼び出します。