プリンター ドライバー アーキテクチャ
重要
Windows でプリンターとの通信手段として推奨されるのは、最新の印刷プラットフォームです。 プリンターデバイス開発におけるWindows 10および11での印刷体験をカスタマイズするために、MicrosoftのIPPインボックスクラスドライバーとPrint Support Apps (PSA)の使用を推奨します。
詳細については、最新の印刷プラットフォームに関する記事および「印刷サポート アプリの設計ガイド」を参照してください。
印刷ジョブは、Microsoft Win32 GDI または Windows Vista の Windows Presentation Foundation (WPF) 関数の呼び出しを通じてアプリケーションによって作成されます。 Win32 関数は、アプリケーション データを EMF レコードとしてスプールして後で EMF 印刷プロセッサで再生できるようにすることも、ドキュメント ページごとに印刷可能なイメージをすぐにレンダリングすることもできます。 WPF 関数は、アプリケーション データを XPS スプール ファイルとしてスプールします。
Windows Vista より前では、アプリケーションは、DEVMODEW 構造体を使用してプリンター設定をプリンターに伝達していました。 Windows Vista では、印刷チケットと印刷機能のテクノロジによってプリンター設定を伝達されるようになり、プリンターとアプリケーション間でのプリンター設定の互換性が向上しました。
イメージのレンダリングは、すぐに実行されるか、印刷処理中に実行されるかに関係なく、印刷ドライバーで実行されます。
GDI ベースのプリンター ドライバーは、スプール ファイルからの EMF レコードの再生中にイメージのレンダリングを実行し、GDI レンダリング エンジンによって制御されます。 レンダリング処理中、GDI レンダリング エンジンは、適切な Windows 2000 以降のプリンター ドライバーを呼び出して支援を求めます。
XPSDrv 印刷ドライバーは、一連の処理フィルターを使用して、プリンターに出力するための XPS スプール ファイルの内容を処理します。
Windows 2000 以降の GDI ベースのプリンター ドライバーは、次の操作を実行する必要があります。
GDI でサポートされないプリンター固有の描画機能を提供することで、GDI による印刷ジョブのレンダリングを支援する。
レンダリングされたイメージのデータ ストリームを印刷スプーラーに送信する。
プリンターと印刷ドキュメントに関連付けられている変更可能な構成パラメーター (選択されている給紙トレイと排紙トレイ、印刷部数、イメージの解像度と向きなど) に対するユーザー インターフェイスを提供する。
XPSDrv プリンター ドライバーは、GDI ベースのドライバーと同じユーザー インターフェイスの役割を持ち、印刷ジョブ データの処理とプリンターへのデータの送信も担当します。 ただし、XPSDrv プリンター ドライバーでは、GDI を使用してプリンター用のページ イメージをレンダリングする必要はありません。
Windows 2000 以降のプリンター ドライバーは、ドライバーの描画操作とユーザー インターフェイス操作が別個の DLL に分離されたプリンター ドライバー コンポーネントのセットで構成されています。 XPSDrv プリンター ドライバーは、構成、描画機能、レンダリング機能が別個のオブジェクトに分離されたコンポーネントで構成されています。
このセクションは、Windows 2000 以降のオペレーティング システムでサポートされるさまざまな種類のプリンター ドライバーを理解するのに役立ちますが、次の 3 つのプリンター ドライバーがオペレーティング システムに付属していることも忘れないでください。
Microsoft PostScript プリンター ドライバー
これら 3 つのドライバーは、エンドユーザーが現在購入できるほとんどの印刷デバイスをサポートしています。 印刷デバイスが Microsoft によって提供される適切なドライバーと互換性がない場合に限り、自分でプリンター ドライバーを記述する必要があります。 Microsoft が提供するドライバーのいずれかにプリンター データ ファイルを追加するだけで、ほとんどの新しいプリンターをサポートできます。 新しいドライバーを必要とする可能性があるデバイスには、独自のコマンド シーケンスによって制御されるハードウェア描画アクセラレータを含むデバイスが含まれます。
このセクションには、Windows 印刷アーキテクチャについて説明する次のトピックが含まれています。