プリンタードライバー終了と業務アプリ印刷の知識マップ(知識グラフ)
サードパーティ製プリンタードライバー(v3/v4)の提供終了計画は既存ドライバーを無効化しないが、プリンタードライバーの順位付けを常にIPPクラスドライバー優先へ変えることで、PCの入れ替えやプリンターの再検出のたびに意図しないドライバーの入れ替わりを起こし得る。Windows Ready Printはその後継で、Windows 10 21H2以降に同梱されるMicrosoft IPP Class DriverがIPPでMopria認証済みプリンターと通信する(USB接続機はIPP over USBモードが前提)。ただしWindows Ready Printでもアプリの描画命令は印刷スプーラーを通る。Windows protected print modeはWindows Ready Printだけを使う動作モードで、Windows 11 24H2以降でグループポリシーやIntuneから構成でき、有効かどうかはWindowsProtectedPrintInfo.IsProtectedPrintEnabledで確認できる。有効化すると第三者ドライバー、サポートされないソフトウェアプリンター、XPS Document Writer、Point and Printによる第三者ドライバー配布が排除され、メーカー製ドライバーで導入済みのキューはMopria認証済みでも一度削除されて再登録が要る。Mopria認証を取れないラベル・レシートプリンターと、WPPで残らないキュー（メーカー製ドライバーのキューなど）へのRAW送信は、このモードと両立しない。DEVMODEの非公開部分やPrintTicketの私的拡張を含むドライバー固有設定の保存はドライバーの入れ替わりと両立せず、意図だけを保存して印刷直前に能力を照会・検証する設計が推奨される。キュー名への依存やドライバーの入れ替わりは印刷先キューの消失を招くため、起動時の存在確認と通知が推奨され、既定プリンターへの無言のフォールバックは推奨されない。仮想プリンターへの依存にはPDF生成ライブラリ、ラベル・レシートプリンターにはスプーラーに依存しない出力経路が推奨される。System.Printing名前空間はWindowsサービスと両立しない。ドライバーの種別はPrintManagementモジュールで確認でき、印刷先のキューがWindows protected print modeで残るか、物理プリンターがWindows Ready Printで再登録できるかの判定は印刷コードの依存の棚卸しより先に行い、Windows protected print modeを使う環境では有効にした検証で、使わない環境では物理のIPP対応機をWPPを無効にしたまま再検出する検証で備えを確かめる。
サードパーティ製プリンタードライバーの提供終了計画
ドライバー固有設定の保存・復元
サードパーティ製プリンタードライバー（v3 / v4）
プリンタードライバーの順位付け
意図しないプリンタードライバーの入れ替わり
サポートされないソフトウェアプリンター（仮想プリンター）
印刷直前の能力照会と検証（GetPrintCapabilities / MergeAndValidatePrintTicket）
プリンター名・キュー名への依存
起動時のプリンター存在確認と通知
既定プリンターへの無言のフォールバック
RAW送信（RAWデータ種別でのスプーラー経由送信）
スプーラーに依存しない出力経路
PrintManagementモジュール（Get-Printer / Get-PrinterDriver）
Microsoftが2023年9月に発表した、v3/v4のサードパーティ製プリンタードライバーの提供を段階的に終える計画。2026年1月15日にWindows Updateへの新規掲載を停止し、2026年7月1日に順位付けでIPPクラスドライバーを優先し、2027年7月1日にセキュリティ修正以外の更新を受け付けなくなる。対象はWindows 11以降とWindows Server 2025以降。
プリンタードライバー終了
End of servicing plan for third-party printer drivers
Windows protected print mode
Windows Ready Printだけを使ってプリンターと通信する、Windows 11 24H2で導入された動作モード。有効化すると第三者ドライバーを使うプリンターがアンインストールされ、スプーラーは第三者バイナリを読み込まない構成に切り替わる。
Windows保護印刷モード
Windows Ready Print
IPPによる印刷、eSCLによるスキャン、Universal Printを束ねた、第三者ドライバーを必要としないWindowsのプリンター通信方式の呼び名。Mopria認証済みプリンター向けに設計され、PCのアーキテクチャに依存しない。
ドライバーレス印刷
DEVMODEバッファを非公開部分ごと保存する（SetHdevmodeで非公開領域を受け取った後のPrinterSettingsを丸ごとシリアライズする場合を含む）、PrinterSettingsやPageSettingsの公開プロパティの値（Customやメーカー固有の用紙・トレイの番号）を保存する、メーカー名前空間を含むPrintTicketを保存するなど、プリンタードライバーに依存した状態を印刷設定として設定ファイルに持ち歩く実装。前二者は壊れ方が異なる。
DEVMODEの丸ごと保存
PrinterSettingsのシリアライズ
同じデバイスに複数のドライバーパッケージが合致するとき、Windowsが各パッケージに順位を付けて最も良いものをインストールする仕組み。2026年7月1日以降はプリンターについて常にIPPクラスドライバーを優先するよう変更される。
ドライバーのランク
PCの入れ替え・OSの再インストール・プリンターの再検出、あるいはWindows protected print modeの有効化によって、これまで使っていたメーカー製ドライバーとは別のドライバー(多くはIPPクラスドライバー)でキューが作り直される状態。
ドライバーの入れ替わり
プリンターメーカーが提供し、印刷スプーラーに読み込まれて描画命令をそのプリンターの言語へ変換する従来型のプリンタードライバー。v3はUnidrv/PScript5ベースのGDI向けドライバーとXPSDrvドライバーの両方を含むドライバーモデルで、v4はv3を土台にXPSDrv・GPD・PPDなどを引き継ぎつつ、ドライバーストアからの直接読み込みやUWP向けのカスタマイズを前提に整理し直した後継のドライバーモデル。ドライバーモデルの版(v3/v4)と描画経路(GDI印刷パス/XPS印刷パス)は別の軸である。
v3ドライバー
v4ドライバー
第三者製プリンタードライバー
メーカー製プリンタードライバー
Microsoft IPP Class Driver
Windows 10 21H2以降に同梱される、Mopria認証済みプリンターとIPPで通信する汎用ドライバー。メーカー製ドライバーを必要とせず、ネットワークとUSBの両方の接続を扱う。
IPPクラスドライバー
IPP同梱クラスドライバー
印刷スプーラー
アプリから受け取った印刷ジョブを一旦ためて、順にプリンタードライバーへ渡すWindowsのサービス。
IPP（Internet Printing Protocol）
HTTPをベースにしたプリンターとクライアントの標準通信プロトコル。各要求はHTTP POSTで、プリンターはippまたはipps形式のIPP URIで識別される（ippsはTLSを使う）。ドライバーレス印刷ではPWG RasterやPDFなど公開標準に基づく少数のPDLを扱う。
Mopria認証済みプリンター
プリンターメーカーとソフトウェアベンダーの団体Mopriaが定めるIPP印刷・eSCLスキャンの標準への準拠を認証されたプリンター。Windows Ready Printで物理プリンターを再登録して使うにはこの認証が前提となる。Universal Printのクラウドキューは別のクラスドライバーを使うため対象外。
Mopria認証
IPP over USB
USB接続のプリンターをIPPで扱うためのUSBインターフェースの動作モード。USB接続機がWindows Ready Printで印刷・FAX・スキャンの各機能を使えるのは、このモードのときに限られる。
物理プリンターの代わりにファイル出力や別アプリへの受け渡しを行う仮想的なプリンターキューのうち、Windows protected print modeが対応していないもの。有効化時にアンインストールされる。
仮想プリンター
ソフトウェアプリンター
Microsoft XPS Document Writer
印刷結果をXPSファイルとして保存するWindows標準の仮想プリンター。Windows protected print modeを有効にすると削除され、無効に戻したあとにWindowsの機能から手動で入れ直す。
Point and Printによるドライバー配布
クライアントがプリントサーバー上の共有プリンターに接続したとき、必要なドライバーをサーバーから受け取ってインストールする仕組み。2021年のKB5005652以降は既定で管理者資格情報が要り、Windows protected print modeでは第三者ドライバーのインストールを行わない。
グループポリシー
Active Directoryドメイン環境でWindowsの設定を集中構成する仕組み。
Microsoft Intune
クラウドからPC・モバイルデバイスを管理するMicrosoftのMDMサービス。
Windows 11 バージョン24H2（クライアント）
2024年に提供が始まったWindows 11のクライアント向け機能更新版。Windows protected print modeはこの版で導入され、そのポリシーの適用OSも本版以降とされている。
WindowsProtectedPrintInfo.IsProtectedPrintEnabled
現在のデバイスでWindows protected print modeが有効かどうかを返す、Windows 11 24H2で導入されたWinRTの静的プロパティ。
WPPの有効状態の問い合わせ
ラベル・レシートプリンター
独自のコマンド言語やSDKで制御されることの多い、ラベルやレシートを出力する業務用プリンター。Mopria認証を取れない機種が多く、印刷スタックの変化の影響を受けやすい。
ラベルプリンター
レシートプリンター
OpenPrinterからStartDocPrinter(データ種別RAW)・WritePrinter・EndDocPrinterと呼び、プリンターの言語で書かれたデータをスプーラー経由でそのまま流す方式。文書はハードウェアの言語で印刷設定を完全に記述している必要があり、DEVMODEの設定は使われない。
RAWデータ種別
WritePrinterによる直接送信
DEVMODEの非公開部分
DEVMODE構造体の公開メンバーの直後に置かれる、ドライバーが定義する非公開データ。サイズはdmDriverExtraで示され、そのドライバーだけが解釈できる。Windowsが検証するのは公開部分だけで、壊れた非公開データはドライバーをクラッシュさせ得る。
ドライバー固有のDEVMODEデータ
PrintTicketの私的拡張
DEVMODEの後継として設計されたXML形式のPrintTicketに、公開キーワード(psk名前空間)とは別に、その第三者に明確に関連付けられた名前空間で含められるデバイス固有の要素。
PrintTicketのメーカー名前空間
設定ファイルには用紙・向き・両面・部数・トレイなどの意図だけを公開キーワードで持ち、印刷の直前にPrintQueue.GetPrintCapabilitiesで現在のプリンターの能力を取り、MergeAndValidatePrintTicketに通してValidationResult.ConflictStatusを確認し、ConflictResolvedなら置き換えられた項目を要求と突き合わせてログと通知に回してから印刷する設計。
アプリの設定やコードが印刷先を特定のプリンター名・キュー名で固定している状態。メーカーSDKや帳票ライブラリが内部でキュー名やドライバーを固定して呼んでいる場合も含む。プリンターが別のドライバーで入り直したときにキューが同じ名前で作られる保証はない。
キュー名の固定
印刷先キューの消失
設定が指しているプリンター名・キュー名が、ドライバーの入れ替わりやプリンターの削除によって実在しなくなった状態。
印刷先が見つからない
起動時に設定のプリンター名がPrinterSettings.InstalledPrintersに存在するかを検証し、無ければログを残してユーザーに通知し、設定画面で選び直させる実装。
InstalledPrintersでの存在確認
設定のプリンターが見つからないときに、通知もログもなく既定プリンターへ印刷先を切り替える実装。伝票が別の部署のプリンターから出るような事故を隠す。
黙って既定プリンターへ出す実装
仮想プリンターへの依存
WPPが対応しない第三者製のPDF仮想プリンター（ポートモニターDLL型など）に印刷して出力フォルダーを監視する、XPS Document Writerで中間ファイルを作るなど、仮想プリンターの存在を前提にした業務アプリの処理。
PDF仮想プリンター経由の帳票アーカイブ
PDF生成ライブラリ
印刷パイプラインを経由せず、PDFファイルを直接生成するライブラリ群の総称。
PDFライブラリ
装置と直接通信するメーカーSDK、TCPソケットでのプリンター言語の直接送信、シリアル(仮想COM)やUSBでの直接送信など、Windowsの印刷スプーラーとプリンタードライバーを経由しない出力経路。
印刷スタックから切り離した経路
直接送信
System.Printing名前空間
WPFの印刷キューやプリンタードライバー、PrintTicketを扱う.NETの名前空間。Windowsサービスや ASP.NETアプリケーション内での利用はサポートされていない。
Windowsサービス
ユーザーのサインインと無関係にバックグラウンドで動くWindowsのプロセス。
サービス
プリンターとプリンタードライバーの一覧・設定を扱うPowerShellモジュール。Get-PrinterとGet-PrinterDriverは管理者資格情報なしで実行でき、Get-PrinterDriverのMajorVersionでv3かv4かを、ManufacturerとInfPathをpnputilの第三者パッケージ一覧と突き合わせて同梱ドライバーかメーカー製ドライバーかを見分けられる。
印刷先キューのWPP互換性の判定
印刷先のキューがWindows protected print modeで残るか（Universal PrintのクラウドキューやWPP対応の経路へ更新済みの仮想プリンター）、または物理プリンターがMopria認証済みでWindows Ready Printにより再登録できる機種かどうかを、アプリのコードを見る前に判定する手順。
印刷先プリンターがWindows Ready Printで再登録できるかの判定
プリンターのWPP互換性判定
印刷コードの依存の棚卸し
業務アプリの印刷コードについて、ドライバー固有設定の保存・復元、プリンター名やキュー名への依存、仮想プリンターへの依存、RAWデータのスプーラー経由送信の有無を確認する作業。
印刷コードの棚卸し
Windows protected print modeを有効にした検証
検証機に5.1の棚卸しで分かったアプリが使う物理・仮想・同梱のキューをすべて現場と同じ構成で再現して印刷結果を保存し、Windows protected print modeを有効にして互換機を再登録したうえで同じ印刷を再実行し、差分を突き合わせる検証手順。
WPPを先に有効にして壊す検証
WPPを無効にしたままの再検出検証
Windows protected print modeを使わない判断をした環境で、順位変更の対象になる物理のIPP対応機を検証機で削除して再検出・再インストールし、順位付けでIPPクラスドライバーのキューに変わるかと出力差を確かめる検証手順。Universal Printのクラウドキューや仮想プリンターには再検出する機器も順位変更もないため、実際のキューでの出力確認で済ませる。
WPP不使用環境の再検出検証
提供終了計画の2026年7月1日の段階は、プリンタードライバーの順位付けを常にIPPクラスドライバーを優先するよう変更するものである。
計画は既存ドライバーを無効化しないが、PCの入れ替え・OS再インストール・プリンターの再検出では順位付けによって以前と違うドライバーが選ばれ、現場のドライバーが入れ替わる。
新規インストール時にIPPクラスドライバーが常に優先されるため、プリンターの再検出や再インストールで以前のメーカー製ドライバーとは別のドライバーでキューが作られる。
Windows Ready Printは、v3/v4のサードパーティ製ドライバーを必要としないプリンター通信方式として、その提供終了後の位置を担う。
Windows Ready PrintのIPP印刷は、Windows 10 21H2以降に同梱されるMicrosoft IPP Class Driverで行われる。
Windows Ready Printでもアプリの描画命令はスプーラーを通り、変換を担うのが同梱のクラスドライバーに変わるだけで、スプーラーの外に出るわけではない。
Microsoft IPP Class DriverはIPPでプリンターと通信し、PWG RasterやPDFなど少数のPDLへクライアント側でレンダリングして送る。
Windows protected print modeを有効にしたPCで、ローカルの物理プリンターをWindows Ready Printで再登録して使うにはMopria認証済みであることが前提になる。Universal Printのクラウドキューは同梱のUniversal Print Class Driverを使い、WPP対応の経路へ更新済みの仮想プリンターも別に検証するため、この前提は物理プリンターの再登録に限る。
USB接続の機種がWindows Ready Printで各機能を使えるのは、USBインターフェースがIPP over USBモードのときに限られる。
Windows protected print modeは、Windows Ready Printだけを使ってプリンターと通信する動作モードである。
有効化すると第三者ドライバーを使うプリンターはアンインストールされ、ドライバーはドライバーストアから削除されて有効なあいだは使えない。
有効化するとサポートされないソフトウェアプリンターは削除される。OneNote (Desktop)がその例として挙げられている。
有効化するとMicrosoft XPS Document WriterとFAXの仮想プリンターは削除される。無効に戻したあと、XPSはWindowsの機能から、FAXは「Windows FAXとスキャン」のオプション機能から手動で入れ直す。
Windows protected print modeではPoint and PrintのIPP構成は残るが、第三者ドライバーのインストールは決して行われない。
Mopria認証済みでもメーカー製ドライバーで導入されていたプリンターは一度アンインストールされる。再インストールしてWindows Ready Printで動くのは、ネットワーク接続でIPPが有効で到達できる機種か、USB接続ならIPP over USBモードにしてある機種に限られ、従来のUSB動作モードのままの機種は認証済みでも再登録できない。
グループポリシーの「Configure Windows protected print」で有効化でき、その場合はユーザーが解除できない。
IntuneではOMA-URI ./Device/Vendor/MSFT/Policy/Config/Printers/ConfigureWindowsProtectedPrint で有効化できる。
Windows protected print modeはWindows 11 バージョン24H2で導入され、ポリシーの適用OSも24H2以降のWindows 11である。
現在のデバイスでWindows protected print modeが有効かどうかは、WindowsProtectedPrintInfo.IsProtectedPrintEnabledで問い合わせられる。
Mopria認証を取れないラベル・レシートプリンターは、メーカー製ドライバーの署名が例外的に続いても、Windows protected print modeの下では第三者ドライバーごと使えなくなる。
Windows protected print modeで残らないキュー（メーカー製ドライバーのキューや、Generic / Text OnlyのようにWPPで残らないことを個別に確認した同梱ドライバーのキュー）にRAWデータを流している構成は、そのキューが消えると通り道を失う。IPPクラスドライバーのキューに独自PDLをRAWで流せるかはプリンター側のIPP実装に依存する。
DEVMODEの非公開部分を保存する実装は、ドライバー定義の非公開データを含んだ形で設定を持ち歩く。DocumentPropertiesの結果やGetHdevmodeのバッファをdmDriverExtraのぶんまで保存してSetHdevmodeで戻す実装のほか、SetHdevmodeで非公開領域を内部に複写した後のPrinterSettingsを.NET Frameworkのバイナリシリアライズで丸ごと保存する実装も、Serializableな型では既定でprivateフィールドも直列化されるためここに入る。PrinterSettingsやPageSettingsの公開プロパティの値だけを独自形式で保存する実装にはネイティブのDEVMODEやdmDriverExtra領域は含まれず、その実装の問題はCustomやメーカー固有の用紙・トレイ番号への依存という別のものである。PrintTicketだけを保存する実装はDEVMODEを使わない。
保存したPrintTicket XMLにメーカーの名前空間が混ざっているなら、それはPrintTicketの私的拡張を含んだドライバー固有設定である。
ドライバーがIPPクラスドライバーに変わった瞬間、保存していたDEVMODEの非公開データはそのドライバーだけが解釈できるものだったため意味を失う。PrinterSettingsやPageSettingsの公開プロパティの値として保存した用紙・トレイの値のうち、標準のPaperKindやPaperSourceKindに対応するRawKindはドライバーが変わっても意味を保つが、Customやメーカー固有の値はメーカー製ドライバーの一覧に対する番号なので、IPPクラスドライバーが同じ用紙・トレイと解釈する保証がない。壊れ方は違うが、どちらもドライバーの入れ替わりと両立しない。
保存するのは意図だけにしてドライバーの状態を保存せず、印刷直前にGetPrintCapabilitiesで能力を取りMergeAndValidatePrintTicketで検証する設計が、ドライバー固有設定の保存に対する本記事の推奨である。
プリンターが別のドライバーで入り直したときキューが同じ名前で作られる保証はなく、旧キューを指した設定は空振りする。
ドライバーが入れ替わってキューが作り直されると、設定が指していたプリンター名・キュー名が実在しなくなることがある。
起動時に設定のプリンター名がInstalledPrintersに存在するかを検証し、無ければログを残してユーザーに通知して選び直させることが、印刷先キューの消失に対する本記事の推奨である。
設定のプリンターが見つからないときに黙って既定プリンターへ切り替える実装は、伝票が別の部署のプリンターから出る事故を隠すため推奨されない。
ポートモニターDLL型などWindows protected print modeが対応しない第三者製PDF仮想プリンターへ印刷して出力フォルダーを監視する帳票アーカイブは、対応しないソフトウェアプリンターに依存している。WPP対応の仮想プリンターへ更新済みの製品はこの限りではない。
Microsoft XPS Document Writerへ印刷してXPSファイルを中間形式として作る処理は、その仮想キューに依存している。XpsDocumentなどで直接生成する処理は依存しない。
PDFが欲しいならPDFライブラリで直接生成する構成に寄せることが、仮想プリンターへの依存に対する本記事の推奨である。
RAW送信はStartDocPrinter・WritePrinter・EndDocPrinterでプリンターの言語のデータをスプーラー経由でそのまま流し、ドライバーは実質ポートへの通り道として使われる。
装置と直接通信するSDK、TCP・シリアル・USBでの直接送信のように印刷スタックの変化の影響を受けない経路を少なくとも一つ持つことが、ラベル・レシートプリンターに対する本記事の推奨である。
System.Printing名前空間のクラスはWindowsサービスやASP.NETアプリケーション内での利用がサポートされておらず、性能低下や実行時例外を起こし得る。
キューがIPPクラスドライバーかUniversal Printかは、Get-PrinterのDriverNameで管理者権限なしに確認できる。Get-PrinterDriverのMajorVersionで分かるのはv3かv4かだけで、メーカー製v4ドライバーもMajorVersionは4になるため、それ以外の同梱ドライバーとメーカー製ドライバーの区別には、Get-PrinterDriverのManufacturerとInfPathのファイル名を、第三者のドライバーパッケージだけを列挙するpnputil /enum-driversの一覧（公開名・元のINF名・提供元）と突き合わせる（管理者権限が要る）。
印刷先のキューがWindows protected print modeで残るか（Universal PrintのクラウドキューやWPP対応の経路へ更新済みの仮想プリンターは再登録の操作なしで残る）、または物理プリンターをWindows Ready Printで再登録できるかを、コードの依存の棚卸しより先に判定する。Mopria非対応機をメーカー製ドライバーで使っている場合はコードが描画だけでもキューごと消えるからである。
Windows protected print modeを使う環境では、検証機に5.1の棚卸しで分かったアプリが使う物理・仮想・同梱のキューをすべて現場と同じ構成で再現したうえでWPPを有効にし、互換機を再登録して同じ印刷を再実行し差分を突き合わせることが、ドライバーの入れ替わりへの備えを確かめる本記事の推奨である。検証機に無いキューは削除差分に現れないため、先に再現する。WPPを使わない判断をした環境は、WPPを無効にしたままの再検出検証の側で扱う。
Windows protected print modeを使わない判断をした環境では、WPPを有効にするとキューごと削除されて順位付けの影響が見えなくなるため、順位変更の対象になる物理のIPP対応機はWPPを無効にしたまま検証機で削除して再検出・再インストールし、順位付けでIPPクラスドライバーのキューに変わるかと出力差を確かめることが本記事の推奨である。Universal Printのクラウドキューや仮想プリンターには再検出する機器も順位変更もないため、実際のキューでの出力確認で済ませる。