プリンター グラフィックス DLL の概要

重要

プリンターデバイス開発におけるWindows 10および11での印刷体験をカスタマイズするために、MicrosoftのIPPインボックスクラスドライバーとPrint Support Apps (PSA)の使用を推奨します。

詳細については、プリントサポートアプリデザインガイド.

プリンター グラフィックス DLL は、グラフィックス DDI の使用で 説明されている Drv プレフィックス付きグラフィックス DDI 関数を実装します。 これらの DLL には、次の 2 つの役割があります。

  • GDI による印刷ジョブのレンダリングを支援します。

    プリンター グラフィックス DLL は、デバイス固有の方法で実行する必要があるため、GDI のレンダリング エンジンでのみ処理できない描画操作を処理するグラフィックス DDI 描画関数を提供できます。

  • レンダリングされたデータ ストリームをスプーラーに配信します。

    通常、プリンター グラフィックス DLL は RAW データ型 (コマンド シーケンスを含む) で出力ストリームを生成し、スプーラーは印刷モニターを介してプリンター ハードウェアに送信できます。

プリンター グラフィックス DLL が提供する必要があるレンダリング 支援の量は、ハードウェアの描画機能に応じてプリンターの種類固有であり、次のシナリオが含まれます。

  • GDI レンダリング エンジンは、GDI で管理されるサーフェスを使用して、すべてのレンダリングを実行します。 グラフィックス DLL には、DDI 描画関数は用意されていません。

  • グラフィックス DLL には、GDI で管理されるサーフェイスを使用して、GDI のレンダリング エンジンと連携して動作するいくつかのグラフィックス DDI 描画関数が用意されています。 グラフィックス DLL によって提供されるグラフィックス DDI 描画関数は、必要に応じて GDI レンダリング エンジンの GDI サポート サービスにコールバックできます。

  • グラフィックス DLL は、グラフィックス DDI 描画関数を提供し、デバイスで管理されるサーフェスを使用して、すべてのレンダリングを行います。

たとえば、 Microsoft ユニバーサル プリンター ドライバー (Unidrv) は GDI で管理されたサーフェイスを使用し、一部のグラフィックス DDI 描画機能を提供します が、Microsoft PostScript プリンター ドライバー ではデバイスで管理されるサーフェイスを使用します。

グラフィックス ドライバーでのレンダリング 支援の詳細については、サーフェス型 および グラフィックス DDI の使用を参照してください。

次の 2 つの図は、アプリケーションが GDI を使用して印刷ジョブを作成するときに発生するデータ フローを示しています。 これらの図では、EMF の記録と再生が組み合わされています。

最初の図は、ユーザー モードのプリンター グラフィックス DLL を示しています。

注: Windows Vista プリンター のグラフィックス DLL は、ユーザー モードでのみ実行できます。 詳細については、ユーザー モードまたはカーネル モードの選択を参照してください。

diagram illustrating a user-mode printer graphics dll.

2 番目の図は、カーネル モード プリンター グラフィックス DLL を示しています。

print job data flow, using a kernel-mode printer graphics dll.

これらの図では、GDI からの出力形式が拡張メタファイル (EMF) の場合、プリンター グラフィックス DLL は、EMF 印刷プロセッサが EMF レコードを再生するまでジョブを受け取りません。 EMF 印刷プロセッサーは、EMF 以外の出力形式に変更されることにも注意してください。

図は、完全にローカルな環境を示しています。 プリンターがサーバーに接続されている場合、EMF レコードは通常、クライアントの GDI レンダリング エンジン (GRE) のコピーによって生成され、サーバーに送信されるローカル ファイルにスプールされます。 スプーラーのサーバーのコピーは、ファイルを読み取り、サーバーの EMF 印刷プロセッサにレコードを送信し、GRE のサーバーのコピーは、サーバーのプリンター グラフィックス DLL を呼び出します。