End of Servicing for Windows Printer Drivers — How Business Apps Should Prepare Their Report and Label Printing

· Updated: · · Windows, Windows Development, Windows 11, C#, .NET, WinForms, WPF, Printing, Reports, Printer Driver, IPP, Operations, Technical Consulting

Revision history (first version, published Sep 1, 2026)
First published
Cite this article(DOI: 10.5281/zenodo.22640273)

This article is archived on Zenodo. Below are both the DOI that always resolves to the latest version and the DOI pinned to the version you are reading.

Go Komura (2026). End of Servicing for Windows Printer Drivers — How Business Apps Should Prepare Their Report and Label Printing. KomuraSoft LLC. https://doi.org/10.5281/zenodo.22640273 https://comcomponent.com/en/blog/windows-print-driver-end-of-servicing-business-apps/

DOI (latest version)
10.5281/zenodo.22640273
DOI (this version)
10.5281/zenodo.22640274

“We replaced the PC and the paper and tray choices are different, even though it is the same printer.” “The saved print settings do not come back.” “The label printer has disappeared from the list.” Preparing for the end of printer driver servicing means making sure that changes like these do not stop the business.

The first thing to understand is that the driver end-of-servicing plan and enabling Windows protected print mode are two different things. Existing printing does not all stop the moment the plan’s dates pass. On the other hand, when the way a driver is chosen changes, or when Windows protected print mode is enabled, the settings and print destinations the app depended on are lost.12

This article is for developers who maintain Windows business apps in WinForms, WPF, and the like, and for administrators who deploy printers. It walks through what changes, what to investigate, what to fix, and how to verify, in that order. For how to choose a printing API or a PDF output method in the first place, see the previous article, Printing and PDF Output in Windows Business Apps.

The prerequisite environment is Windows 11 (24H2 or later for testing WPP), PowerShell 5.1 or later (the PrintManagement module), and C# (.NET 6 or later, or .NET Framework 4.x; System.Drawing.Printing / System.Printing). The difficulty is intermediate.

1. The Bottom Line First

Rather than rewriting all printing code across the board, first confirm whether the print destination survives, and then fix the places that depend on the driver.

The order of decisions has three stages.

Order What to check Next action
1. Check the print destination Does the queue survive WPP? Can the physical printer be re-registered with Windows Ready Print? If it does not survive, first either provide another output path or decide not to use WPP
2. Check the app’s dependencies Does it depend on driver-specific settings, queue names, virtual printers, or RAW sending? Fix the places that apply. Include dependencies inside SDKs and report libraries
3. Confirm with actual output Can it still produce reports, PDFs, and labels correctly when the driver or queue changes? Environments that use WPP verify with it enabled; environments that do not use it verify by a different procedure

If the app only draws with PrintDocument or FixedDocument, it is in principle a target for verification, not for rework. However, if the destination queue itself disappears under WPP and cannot be re-registered, printing fails even when the drawing code is fine. Another path is needed first.

If you want to start with the work itself, proceed in this order: take the list in 5.1 → judge the print destination with the tables in chapter 4 and 5.1 → check the dependencies in 5.2 through 5.5 → choose a path in chapter 6 → verify in chapter 7. Chapters 2 through 4 explain the background to the points where the decision is not obvious.

From here on, Windows protected print mode is abbreviated WPP. A “queue” is a print destination registered with Windows, and the “spooler” is the mechanism that receives print jobs and hands them on to the output destination.

In the diagram a solid line marks a relation that always holds and a dashed line marks a conditional one (the conditions are given per relation on the detail page). The full list of relations (39 in total, with evidence and certainty) and the definitions of the main concepts are collected on the knowledge map detail page (in Japanese). Data: JSON-LD / Turtle

2. What Was Decided — A Three-Stage Timeline

2.1 What Ends Is Supply and Updates, Not a Blanket Shutdown of Existing Drivers

The primary source is “End of servicing plan for third-party printer drivers on Windows” on Microsoft Learn. The plan was announced in September 2023 and its dates were revised in May 2025. As of this writing, the plan is as follows.1

Date What changes What business apps need to watch
January 15, 2026 On Windows 11 and later and Windows Server 2025 and later, new printer drivers are no longer published to Windows Update. Updates to existing drivers remain possible through case-by-case review When deploying new PCs and printers, a vendor driver may no longer be obtainable the same way as before
July 1, 2026 Printer driver ranking changes to always prefer the IPP class driver that ships with Windows On devices the IPP class driver also matches, a different driver may be chosen when a PC is replaced or a printer is redetected
July 1, 2027 Except for security fixes, updates to third-party printer drivers are no longer accepted Do not mistake the date updates stop for the deadline of the app-side preparation

Existing drivers can still be installed from Windows Update and from vendor-supplied installers, and Microsoft says it has no plans to disable v3/v4 driver functionality. In other words, this is a plan to phase out the supply and updating of drivers, not a plan to disable the drivers already installed on PCs in the field on that day.1

What changes and what does not with the end of driver servicingThe end of printer driver servicing by itself changes neither the entry point of the app's drawing API nor the existing drivers; only when a different driver is chosen on new installation or redetection are the paper list, proprietary features, and queue name the driver returned replaced, and the changes caused by enabling Windows protected print mode, including the removal of virtual printers, are a separate mechanism covered in chapter 4End of printer driver servicingWhat does not changeWhen a different driver is chosen on new installation or redetectionWhat is replacedDrawing API entry pointExisting driversPaper, trays, proprietary featuresQueue name

Figure 1: The end of servicing alone changes nothing; when a different driver is chosen, the information and names the driver provided are replaced. The changes caused by enabling WPP, including the removal of virtual printers, are a separate mechanism (chapter 4).

2.2 Drivers Change in the Field Mainly in Two Situations

Even though the plan does not stop existing drivers, the environment the app sees changes in the following situations.

Situation What happens
PC replacement, OS reinstallation, printer redetection If the IPP class driver also matches the device, ranking selects a different driver than before
Enabling WPP Printers on third-party drivers are removed. Compatible models are re-registered with Windows Ready Print; incompatible models can no longer be used as they are

When several driver packages match the same device, Windows assigns each a rank and selects the best one. The change on July 1, 2026 makes this selection prefer the IPP class driver. On devices for which the IPP class driver is not a candidate, the vendor package can continue to be selected.31

Two paths by which drivers get replaced in the fieldOn devices the IPP class driver matches, ranking selects the IPP class driver on PC replacement, OS reinstallation, or printer redetection and the driver is replaced; when Windows protected print mode is enabled, printers on third-party drivers are removed, the driver is replaced on models that can be re-registered with Windows Ready Print, and the print destination is lost on models that cannotYesNoPC in the fieldPC replacement, OS reinstall, redetectionWindows protected print mode enabledPreferred on devices the IPP class driver matchesPrinters on third-party drivers removedDriver is replacedCan it be re-registered with Ready Print?Print destination is lost

Figure 2: Keeping the end-of-servicing plan and WPP apart lets you separate the situations where the driver changes from the situations where the print destination itself is lost.

It is also important here not to treat IPP support and Mopria certification as the same condition.

Condition What it mainly decides
The IPP class driver matches the device Whether the ranking change can replace the driver
Mopria certified, and for network connections IPP is enabled and reachable, and for USB connections the device is in IPP over USB mode Whether the physical printer can be re-registered as Windows Ready Print under WPP

On a device that supports IPP without Mopria certification, the ranking change can replace the driver even if you do not use WPP. Conversely, a driver name of “Microsoft IPP Class Driver” by itself does not confirm that the printer can be used under WPP.14

Matching the IPP class driver and Mopria certification are separate conditionsIf the printer supports IPP, the ranking change can select the IPP class driver and replace the driver, while Mopria certification is a separate condition that decides whether the printer can be re-registered under Windows protected print mode, requiring IPP to be enabled and reachable on network-connected devices and IPP over USB mode on USB-connected devicesYesNoNoYesNoYesNoYesYesNoPrinterSupports IPP?Can be replacedStays on the vendor driverMopria certified?Cannot be re-registered under WPPUSB connection?IPP enabled and reachable?Can be re-registered under WPPIPP over USB mode?

Figure 3: The ranking effect is decided by IPP support; whether the printer survives under WPP is decided by Mopria certification plus IPP being enabled and reachable (IPP over USB mode for USB connections).

2.3 Driver Signing Has Exceptions, but Continuation Is Not Guaranteed

After January 15, 2026, drivers that meet any of the following conditions can have a signing exception submitted for case-by-case review.1

  • For printers that cannot obtain Mopria certification.
  • Packages whose highest target OS is Windows 10 or earlier.
  • Native ARM64 drivers.

Submissions are blocked by default for both WHQL and Attestation, and become a manual review with a justification document attached. Even when the conditions apply, there is no guarantee that the vendor will submit or that Microsoft will approve.5 Also, being able to obtain a signed driver and being able to use it in an environment with WPP enabled are two different things. Preparation for label and receipt printers is covered in chapter 6.

Conditions under which driver signing is still allowed after January 15, 2026Driver submissions from vendors are blocked by default, and only those meeting one of three conditions, printers that cannot obtain Mopria certification, packages whose highest target is Windows 10 or earlier, and native ARM64 drivers, can have an exception submitted for case-by-case review, which may lead to approval but does not guarantee signingVendor driver submissionBlocked by defaultModel that cannot obtain Mopria certificationWindows 10 or earlier as the highest targetNative ARM64Exception can be requestedCase-by-case reviewMay be approved (no guarantee)

Figure 4: Meeting the conditions only gets the driver into review; whether it is signed is not guaranteed.

3. How It Works — The Traditional Driver Path and Windows Ready Print

3.1 What Changes Is the Print Path Beyond the Drawing API

In traditional Windows printing, the app issues GDI or XPS drawing commands, the spooler receives the job, and the printer driver converts it into the printer’s language (PDL) and sends it. Both the GDI print path and the XPS print path sit on top of this structure.6

The traditional driver pathThe spooler running as SYSTEM spools the business app's GDI or XPS drawing commands, and a third-party v3 or v4 driver converts them into a proprietary PDL and sends them to the printer, inside the spooler process itself without driver isolation, or in a process separate from the spooler under shared or isolated modeNoneShared / IsolatedBusiness app (GDI / XPS)Spooler (SYSTEM privileges)Driver isolationThird-party driver inside the spooler processThird-party driver in a separate processConvert to proprietary PDLPrinter

Figure 5: On the traditional path the process differs with isolation, but the structure in which third-party code inside the print stack handles the conversion to PDL is the same.

Its successor is Windows Ready Print. This is the collective name for printing over IPP (Internet Printing Protocol), scanning over eSCL, and Universal Print, and it requires no third-party driver. It is designed for Mopria certified printers, and its independence from the CPU architecture is another advantage.7

Windows 10 21H2 and later ship with the Microsoft IPP Class Driver, which handles Mopria-compliant printers over both network and USB.1 Universal Print cloud queues use the inbox Universal Print Class Driver.8

The Windows Ready Print pathThe spooler receives the business app's drawing commands, and either the inbox Microsoft IPP Class Driver renders to PWG Raster or PDF on the client and sends it over IPP to a Mopria certified printer, or the inbox Universal Print Class Driver sends it over IPP over HTTPS to the Universal Print service; Windows protected print mode allows only this Windows Ready Print pathallows only the Ready Print pathBusiness app (GDI / XPS)SpoolerMicrosoft IPP Class DriverRender to PWG Raster / PDFMopria certified printer (IPP)Universal Print Class DriverUniversal Print service (IPP over HTTPS)Windows protected print mode

Figure 6: Windows Ready Print also goes through the spooler. What changes is that conversion and sending move from a third-party driver to the inbox class drivers.

IPP is an HTTP-based protocol, and it identifies a printer by a URI such as ipps://printer.example.com/ipp/print. The PDLs used for driverless printing are limited to a few formats based on public standards, such as PWG Raster and PDF, and the final document is rendered on the client side.9 With Universal Print, the spooler sends the job to the service over IPP over HTTPS.8

The entry point as seen from the app does not change. An app that draws with GDI or XPS calls the same APIs. What changes is the mechanism beyond that which returns the list of paper sizes and trays, provides proprietary features, and converts to PDL. That is why apps that depend on the information a driver returns or on proprietary settings are affected more than apps that only draw. For vendor-specific features, also check whether they are provided through a Print Support App (PSA).10

3.2 Check Print, Fax, and Scan Separately on Multifunction Devices

Whether a device can move to Windows Ready Print depends on the device having that function and implementing the corresponding protocol.1

Function Support required for a network connection Additional condition for a USB connection
Print IPP IPP over USB mode
Fax out IPP Fax Out IPP over USB mode
Scan eSCL or WS-Scan IPP over USB mode

Do not conclude from Mopria print support alone that fax and scan can migrate too.

Order for checking each function of a multifunction device separatelyPick the functions you use one at a time, check in order that the device has the function, that it supports the protocol in the table, and that it is in IPP over USB mode when USB-connected, and check the remaining functions separately instead of reusing the print result for fax or scanYesNoYesNoYesNoYesNoPick one function you useDoes the device have the function?Supports the protocol in the table?Condition for this function not metUSB connection?IPP over USB mode?Condition for this function checkedCheck the remaining functions separately

Figure 7: Check in the order of function availability, supported protocol, and the additional condition for the connection type. Do not reuse the print result for fax or scan.

3.3 The Background Is Print Stack Security

According to the Microsoft Learn explanation, printing-related bugs accounted for 9% of the MSRC (Microsoft Security Response Center) cases it tallied over the previous three years. The spooler runs with SYSTEM privileges, is broadly reachable from standard users, and loads third-party code on demand. Some old drivers are incompatible with modern mitigations such as CFG and CET, which makes it hard to apply mitigations that require every participating piece of code to support them.9

Why mitigations cannot take effect as long as third-party drivers are loadedThe spooler running as SYSTEM loads third-party code, and because old drivers are incompatible with mitigations such as CFG and CET, mitigations that require every participant to support them cannot be applied to the spooler, making vulnerabilities easier to exploitSpooler runs as SYSTEMLoads third-party code on demandOld drivers are incompatible with mitigationsVulnerabilities are easier to exploitMitigations (CFG / CET / ACG) cannot be applied

Figure 8: Mitigations only take effect once every participant supports them, so the spooler cannot be fully protected unless the drivers are removed.

Where a third-party driver runs depends on the printer driver isolation setting.11

Isolation mode Where the driver runs
None Inside the spooler process itself
Shared In a process separate from the spooler, shared with other drivers
Isolated In a separate process dedicated to that driver

A driver that declares DriverIsolation=2 in its INF uses the shared process by default, and a driver that does not declare it runs inside the spooler process by default. Administrators can override this from the Print Management console or Group Policy. In every mode, however, third-party code still runs inside the print stack.11 WPP is the operating mode that removes this dependency on third-party code.

How the process a third-party driver runs in is decidedA driver that declares DriverIsolation=2 in its INF runs by default in a shared process separate from the spooler, a driver without the declaration runs by default inside the spooler process, and administrators can override this from the Print Management console or Group Policy to shared, inside the spooler process, or a separate dedicated process (isolated)YesNoINF declares DriverIsolation=2Runs in a separate shared process (default)Runs inside the spooler process (default)Overridden by administrator settings or policyRuns in a dedicated separate process (isolated)

Figure 9: The isolation mode is decided by the INF declaration and administrator settings; old drivers without the declaration run inside the spooler process by default.

4. What Disappears Under Windows Protected Print Mode

4.1 WPP Is an Operating Mode That “Uses Only Windows Ready Print”

WPP was introduced in Windows 11 24H2. As of this writing it is disabled by default, and while disabled it places no restrictions on driver installation or printing features.1213 Keep separate the way it is enabled and who can turn it back off.

Enabling path Where it is set How to turn it back off
Settings app Windows protected print mode under “Printers & scanners” If the user enabled it in the Settings app, the user can turn it off in the Settings app
Group Policy “Computer Configuration > Administrative Templates > Printers > Configure Windows protected print” An administrator changes the policy
Intune OMA-URI ./Device/Vendor/MSFT/Policy/Config/Printers/ConfigureWindowsProtectedPrint An administrator changes the policy

When it is enabled through Group Policy, the user cannot turn it off without contacting an administrator. The Intune OMA-URI is another path that applies the same ADMX-backed device policy. Assume that the user can turn it off from the Settings screen only when the user enabled it from the Settings screen.14213

Three paths for enabling Windows protected print modeWindows protected print mode can be enabled from the Settings app, Group Policy, or an Intune OMA-URI; the user can turn it off from the Settings app only when the user enabled it there, and when it was distributed by Group Policy or an Intune policy it cannot be turned off without the administrator changing the policythe user can turn it off in the Settings appthe user cannot turn it offthe user cannot turn it offSettings app (enabled by the user)Windows protected print mode enabledGroup PolicyIntune (OMA-URI)Turned offTurning it off requires an administrator policy change

Figure 10: There are three enabling paths, and the user can turn it off only when the user enabled it from the Settings app.

4.2 Queues That Survive, Queues That Disappear, and Queues That Must Be Re-Registered

The effect at enabling time depends not only on the printer itself but also on which driver it is currently registered with.2

Current print destination When WPP is enabled How to prepare
Physical printer registered with a third-party (v3/v4) driver The queue is uninstalled and the driver is also removed from the driver store Re-register compatible models with Windows Ready Print. For incompatible models, choose another path or decide not to use WPP
Printer registered with a vendor driver, even if Mopria certified It is removed once. Certification does not mean the existing queue survives Check IPP enablement and reachability for network connections, or IPP over USB mode for USB, and re-register
Compatible printer already registered with Windows Ready Print Continues to work Verify capabilities, settings, and actual output
Universal Print cloud queue Sits on the WPP-compatible side as part of Windows Ready Print Check dependencies on the queue name and verify actual output
Unsupported software printer Removed For third-party PDF printers and the like, check the product’s WPP support. Move report archiving toward direct generation with a PDF library
Virtual printer updated for WPP support Not treated the same as unsupported products. OneNote has a Protected virtual printer Verify which kind the product and queue in use are
Microsoft XPS Document Writer, the fax virtual printer Removed After turning WPP back off, reinstall XPS manually from “Windows Features” and fax from the “Windows Fax and Scan” optional feature
What happens to printers when Windows protected print mode is enabledOn enabling, printers installed with third-party drivers and unsupported virtual printers, the XPS Document Writer, and the fax virtual printer are removed; models that are Mopria certified and, for network connections, have IPP enabled and reachable or, for USB connections, are in IPP over USB mode can be re-registered with Windows Ready Print, and unsupported devices cannot be used while it is enabledYesNetworkUSBYesYesNoNoNoWPP enabledPrinters on third-party drivers removedUnsupported virtual printers removedXPS Document Writer and fax also removedMopria certified?Connection typeIPP enabled and reachable?IPP over USB mode?Re-register with Windows Ready PrintUnusable while enabled

Figure 11: A queue on a vendor driver disappears once even if the printer is Mopria certified. Check the conditions for re-registration separately.

While WPP is enabled, the removed third-party drivers cannot be used. Also, turning WPP back off does not automatically return a printer that was reinstalled with Windows Ready Print to its original driver.210

On the app side, the things to check are processing that assumes the paper sizes, trays, and proprietary features a vendor driver returns, port monitor DLL-style virtual printers, and the XPS Document Writer. Generating XPS files directly with XpsDocument and the like is different from printing to the virtual queue called XPS Document Writer, and is not affected by this removal.

4.3 Management and Spooler Internals Change Too

Under WPP, third-party binaries such as port monitor DLLs are no longer loaded. Module-loading APIs such as AddPrintProvidorW can no longer load new modules, and only the Microsoft-signed binaries needed for IPP are loaded. AddPrintProvidorW is the historical spelling in winspool.h; the Microsoft Learn explanation writes it as AddPrintProviderW.9

This restriction lets XPS rendering run with user privileges instead of SYSTEM, and the new spooler worker process uses a restricted token with privileges such as SeTcbPrivilege removed. Child process creation is prohibited, and CFG, CET, and ACG are enabled as well.9

Changes to the spooler under Windows protected print modeNo longer loading third-party binaries makes it possible to restrict module loading, render XPS with user privileges, run worker processes with a restricted token, prohibit child process creation, and enable CFG, CET, and ACGThird-party binaries are not loadedRestricted loadingReduced privilegesMitigations enabledMicrosoft-signed binaries onlyUser-privilege XPS, restricted tokenNo child processes, CFG / CET / ACG

Figure 12: The mitigations that could not take effect in Figure 8 can be enabled only once third-party binaries are removed.

Point and Print keeps its IPP configuration but no longer installs third-party drivers. Provisioning procedures built on the assumption that “connecting to the print server distributes the driver” also need to be revisited.9

Whether WPP is currently enabled can be checked with the WinRT API Windows.Graphics.Printing.ProtectedPrint.WindowsProtectedPrintInfo.IsProtectedPrintEnabled on Windows 11 24H2 and later.15 The Group Policy setting is the value WindowsProtectedPrintGroupPolicyState under HKLM\Software\Policies\Microsoft\Windows NT\Printers\WPP.13

Note that a client with WPP enabled cannot manage a print server with WPP disabled from Print Management. Provide administrators with a separate management client that has WPP disabled.14

5. Taking Inventory of Existing Apps — The Four Places to Look

The four places to inventory in a business appIn a business app's printing code, the four places, saving driver-specific settings, queue name dependencies (including those inside SDKs and libraries), dependencies on virtual printers not supported by WPP, and RAW sending to queues that do not survive WPP, are targets for rework, and code that only draws is a target for verificationBusiness app printing codeInventory the four dependenciesDrawing onlySaving driver-specific settingsDependency on queue namesDependency on virtual printersRAW sendingIncluding inside SDKsThose not supported by WPPTo queues that do not surviveReworkVerify

Figure 13: Only the four dependencies are targets for rework; code that only draws goes to verification.

5.1 First Take the Driver List in the Field and Judge the Print Destination

Whether rework is needed is decided after seeing what is installed in the field. Take the list of queues and drivers with PowerShell’s PrintManagement module. Listing with Get-Printer and Get-PrinterDriver does not require administrator rights, but the pnputil step in the second half does.1617

# For each queue, list the driver name, major version (3 = v3, 4 = v4), manufacturer, and INF file name
Get-Printer |
    Select-Object Name, DriverName, PortName,
        @{ Name = "DriverMajorVersion"; Expression = { (Get-PrinterDriver -Name $_.DriverName).MajorVersion } },
        @{ Name = "Manufacturer"; Expression = { (Get-PrinterDriver -Name $_.DriverName).Manufacturer } },
        @{ Name = "InfName"; Expression = { Split-Path -Leaf (Get-PrinterDriver -Name $_.DriverName).InfPath } } |
    Sort-Object DriverName |
    Format-Table -AutoSize

# Enumerate only third-party driver packages, with the published name (oemN.inf), original INF name, and provider (requires administrator rights)
pnputil /enum-drivers /class Printer

MajorVersion distinguishes v3 from v4.18 However, the v3/v4 distinction and the inbox/third-party distinction are separate. Classify as follows.

Category How to tell What to check next
Queue on the IPP class driver DriverName is Microsoft IPP Class Driver Mopria certification, IPP enablement and reachability on the network, IPP over USB mode for USB. Do not decide WPP compatibility from the name alone
Universal Print queue Uses the inbox Universal Print Class Driver8 Treat as the WPP-compatible side and check the app’s queue name dependencies and output
Queue on another inbox driver Not a known class driver name and not in the third-party package list either XPS and fax are removed. Do not assume Generic / Text Only and the like survive. Microsoft Print to PDF is not listed for removal, so judge queue by queue
Queue on a vendor driver Match the INF file name and provider against the third-party package list from pnputil Candidate for driver replacement. Under WPP the existing queue disappears, so check whether the physical device can be re-registered

InfPath from Get-PrinterDriver is the path to the INF inside the driver store and is not guaranteed to return the published oemN.inf name. Match the published name, original INF name, and provider returned by pnputil /enum-drivers against the file name of InfPath and Manufacturer. pnputil /enum-drivers lists only third-party packages; inbox packages do not appear in the list.1917

Procedure for inventorying the printers in the fieldTake the list of queues and drivers with PowerShell, and by DriverName and by matching Manufacturer against the third-party package list from pnputil divide them into queues on the IPP class driver, Universal Print queues (WPP compatible), queues on other inbox drivers (XPS and fax removed, Generic / Text Only cannot be assumed to survive, Microsoft Print to PDF is not listed for removal so it is judged individually), and queues on vendor drivers (candidates for replacement); for queues on the IPP class driver separately confirm Mopria certification, IPP enabled and reachable for network connections, and IPP over USB mode for USB connections, and then match every queue against the queues the app's settings and printing code point toIPP ClassUniversal Print ClassOther inboxVendorTake the list with Get-Printer / Get-PrinterDriverDriverName and providerQueue on the IPP class driverUniversal Print queueJudge individually with the chapter 4 tableCandidate for replacementCheck Mopria, IPP reachability, USBMatch against the app's settings and codeSort with the decision table

Figure 14: Taking the list and sorting by name needs no administrator rights; matching the provider requires administrator rights for pnputil.

Match this list against the queues referenced by the app’s settings, printing code, and the SDKs it uses. If you record the driver, Mopria certification, connection type, IPP reachability, and USB operating mode for each customer site, you can make the judgment with the table in chapter 4.

If the print destination does not survive WPP and cannot be re-registered, either provide the alternative path in chapter 6 or decide not to use WPP before inventorying the code. If the device can be affected by the IPP ranking change even without WPP, continue with 5.2 onward. If you do not use WPP and driver replacement has no effect, the decision is to keep operating on the current path.

To check the driver name from inside the app, read PrintQueue.QueueDriver.Name with WPF’s System.Printing.20

using System.Printing;

// From an administration tool or desktop app, list the driver name of each queue
using var server = new LocalPrintServer();
foreach (PrintQueue queue in server.GetPrintQueues(
    new[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections }))
{
    Console.WriteLine($"{queue.Name}\t{queue.QueueDriver?.Name}\t{queue.QueuePort?.Name}");
}

However, the System.Printing namespace does not support use inside a Windows service. If you print from a resident service, put this diagnostic in the administration tool instead.21 For the constraints on printing from a service, see How to Build and Operate Windows Services and chapter 7 of the previous article.

5.2 Check 1: Are Driver-Specific Settings Saved and Restored?

The hardest thing to find is saved print settings. The reason they break differs with how they are saved.

What is saved Typical implementation Why it breaks when the driver changes
The private part of DEVMODE Save the result of DocumentProperties or the GetHdevmode buffer whole, and restore with SetHdevmode Private data can be interpreted only by that driver
The entire .NET Framework PrinterSettings Binary-serialize the object after the print dialog The driver’s private area copied inside can also be saved
Values of public properties Save PaperSize, PaperSource, PrinterResolution, Duplex, and the like in a custom format Not a private buffer, but the meaning of custom paper and tray numbers and the like changes
A PrintTicket with private extensions Save XML containing a vendor-specific namespace The proprietary extensions depend on the original driver or model

DEVMODE can carry private data after its public members, with its size given by dmDriverExtra. Windows validates only the public part, and corrupt private data can crash the driver in the app’s or the spooler’s process.22

The public and private parts of DEVMODEThe DEVMODE structure carries driver-defined private data indicated by dmDriverExtra after its public members; only the public part is validated by Windows and the private part can be interpreted only by that driver, so saving it whole loses its meaning when the driver changesDEVMODE structurePublic part (dmSize)Private part (dmDriverExtra)Validated by WindowsInterpreted only by that driverLoses its meaning when the driver changes

Figure 15: Of a setting saved whole, the part that breaks is the private part.

A PrinterSettings that received its settings through SetHdevmode copies this private area internally.23 The .NET Framework version of PrinterSettings has the Serializable attribute, and binary serialization includes private fields by default, so saving the whole object carries the same dependency.2425

The .NET version of PrinterSettings, on the other hand, has no Serializable attribute, and an implementation that saves the public properties individually in its own format does not save the native DEVMODE buffer or the dmDriverExtra area.24 What to watch for in this case is driver-dependent values.

Saving DEVMODE and saving managed values break differentlyAn implementation that saves the DEVMODE buffer whole and one that serializes a PrinterSettings whole after receiving the private area through SetHdevmode carry the private part with them and lose their meaning when the driver changes; an implementation that saves public property values carries Custom or vendor-specific paper and tray numbers that are values against the vendor driver's list and are not guaranteed to mean the same under the IPP class driver; both are replaced by a design that saves only the intentSave DEVMODE wholeCarries the private part alongSave whole after SetHdevmodeLoses its meaning when the driver changesSave public property valuesCarries custom paper and tray numbers alongNo guarantee of the same meaning on the new driverBoth move to saving only the intent

Figure 16: Saving the whole object after SetHdevmode falls on the private-part side; the failure modes differ, but both carry driver state along.

If RawKind represents a standard PaperKind or PaperSourceKind, it keeps its meaning when the driver changes. What is not guaranteed is that Custom or vendor-specific numbers point to the same paper or tray on a different driver. Do not treat standard values as breaking across the board.2627

Which saved paper and tray values breakAmong RawKind values, those that correspond to standard paper sizes (PaperKind) such as A4 or standard paper sources (PaperSourceKind) such as Upper and Lower keep their meaning when the driver changes, while Custom and vendor-specific values are numbers against the vendor driver's list and the IPP class driver is not guaranteed to interpret them as the same paper or traySaved RawKindStandard values (PaperKind etc.)Custom and vendor-specific valuesKeeps its meaning when the driver changesNo guarantee of the same paper or tray

Figure 17: What breaks is not the standard values but the custom values against the vendor driver’s list.

A PrintTicket also defines its public keywords in the psk namespace but can contain device-specific private extensions. The rule is that third-party elements belong in a namespace clearly associated with that third party. If a vendor namespace appears in the saved XML, check it as a driver-specific setting.2829

Remedy: Save Only the “Intent”

Keep the intent, meaning the choice of paper size, orientation, duplex, copies, and tray, in your own settings file using public keywords. Instead of carrying the driver’s internal state forward, match it against the current capabilities immediately before printing.

In WPF, get the capabilities with PrintQueue.GetPrintCapabilities, express the request as a PrintTicket, and pass it to MergeAndValidatePrintTicket.30 The thing to watch here is that an unsupported request does not necessarily produce an error. The driver may resolve the conflict and return a valid ticket, usually with the setting replaced by a default or similar.

If ValidationResult.ConflictStatus is ConflictResolved, compare the duplex and tray in ValidatedPrintTicket with the request, log the difference, and notify the user.31

A design that saves only the intent and checks it against capabilities immediately before printingThe settings file holds only the intent for paper, orientation, duplex, copies, and tray in public keywords; immediately before printing, get the current printer's capabilities with GetPrintCapabilities, pass through MergeAndValidatePrintTicket, print as is if ConflictStatus is NoConflict, and if it is ConflictResolved compare the replaced items with the request and send them to the log and a notificationNoConflictConflictResolvedSettings file: intent only (paper, orientation, duplex, copies)GetPrintCapabilities immediately before printingMergeAndValidatePrintTicketConflictStatusPrintLog and notify the difference from the request

Figure 18: Save the intent of the settings and validate it against the current capabilities at print time. Do not silently use a replaced setting; check the difference.

In WinForms, reselect the paper from PrinterSettings.PaperSizes by Kind or dimensions rather than by name. Paper sources from PaperSources can be reused when they are unique standard values such as Upper or Lower, but several proprietary trays can come back lumped together as PaperSourceKind.Custom. And PaperSource carries no paper dimensions. Do not identify a proprietary tray by Kind alone; either remap it explicitly to the current capabilities or have the user choose again.27

5.3 Check 2: Is There a Dependency on Printer or Queue Names?

The previous article recommended keeping the printer name in a settings file. What is added here is the premise that there is no guarantee a queue with the same name is created after a driver replacement or redetection. A setting that points to the old queue name loses its print destination as it is.

The places to check are three: the settings file, names hard-coded in the code, and the internals of SDKs and report libraries. Even when your own code has no fixed name, a vendor SDK may call a specific queue or driver internally. Match the SDK documentation against the list from 5.1.

Three places where a queue name dependency can hideA queue name dependency can hide in three places, a fixed name in the settings file, a fixed name hard-coded in the code, and the queue or driver a vendor SDK or report library calls internally; the first two are found by searching the code and settings, the last by the SDK documentation and the list from 5.1Dependency on queue namesFixed name in the settings fileFixed name hard-coded in the codeFixed inside the SDK or libraryFind by searching the code and settingsConfirm with the SDK documentation and the 5.1 list

Figure 19: Even when your own code has no queue name, a dependency may remain inside an SDK or library.

The remedy is to check at startup that the configured name exists in PrinterSettings.InstalledPrinters, and if it is not found, log it and notify the user. Also make it possible to reselect the print destination from the settings screen.

Do not fall back silently to the default printer. It hides a slip coming out of another department’s printer as a normal print.

Validating the printer name at startupAt startup, check whether the printer name in the settings file exists in InstalledPrinters; if it does, print; if it does not, log it, notify the user, and have them choose again, and do not fall back silently to the default printerYesNodo not do thisStartup: printer name from settingsExists in InstalledPrinters?Print to that queueLog and notify the userChoose again on the settings screenFall back silently to the default printer

Figure 20: An implementation that silently prints to another printer when the destination is not found creates the failure that takes longest to discover.

5.4 Check 3: Is a Virtual Printer Used to Generate Files?

A report archive that prints to a third-party PDF printer and watches the output folder, or processing that creates intermediate files with the XPS Document Writer, stops working when the queue it uses is removed by WPP.

However, what is removed is software printers not supported by WPP. Do not confuse unsupported products such as port monitor DLL-style ones with products that have been updated for WPP support, such as OneNote. Step 3 in chapter 7 confirms whether the queue you actually use is a removal target.2

If what you want is a PDF, then as explained in chapter 5 of the previous article, moving to a setup that generates it directly with a PDF library is the design least dependent on changes in the print stack.

5.5 Check 4: Does RAW Sending Go Through a Queue That WPP Removes?

RAW sending is the method of pushing printer-language data through the spooler with OpenPrinterStartDocPrinter (data type “RAW”) → WritePrinterEndDocPrinter. The document must fully describe the print settings in the hardware’s language, and the DEVMODE settings are not used.3233

It is the standard approach for labels and receipts, but RAW sending is not “direct communication that bypasses the spooler”. Even if the driver is effectively used only as a pass-through to the port, that pass-through is lost when WPP removes the queue.

The RAW sending path and where WPP removes itThe app pushes printer-language data into the spooler with OpenPrinter, StartDocPrinter, and WritePrinter, and a queue that does not survive WPP (such as a queue on a vendor driver) acts as the pass-through to the port and on to the printer, so when WPP removes that queue the pass-through is gonequeue disappearsApp: StartDocPrinter (RAW), WritePrinterSpoolerQueue that does not survive WPP (pass-through)PortLabel or receipt printerWPP enabled

Figure 21: RAW sending uses the driver only as a pass-through, but the pass-through itself disappears.

What to check is which combination of queue, driver, and port you are sending to. Not only queues on vendor drivers but also inbox drivers for physical printers other than the IPP class driver, such as Generic / Text Only, cannot be assumed to survive. Anything confirmed to disappear in the chapter 7 removal list needs another path in the same way.13

Also, Microsoft Learn does not state that a proprietary PDL can be sent RAW to a queue on the IPP class driver. Because it depends on the PDLs the printer’s IPP implementation accepts, do not conclude that “switching to IPP lets the same RAW data through”.

6. An Escape Route for Label and Receipt Printers

KomuraSoft recommends having at least one output path for labels and receipts that does not depend on the spooler.

Even when a printer falls under the signing exception in chapter 2, continued supply of the vendor driver and its use under WPP are not guaranteed.1 Microsoft’s troubleshooting guidance also records a case in which USB-connected receipt and label printers stopped printing after a 2021 update and the problem was resolved by a Known Issue Rollback.34 Knowing your output paths separately is the preparation.

Path Depends on the spooler Suitable situations and cautions
Vendor SDK that talks to the device directly over TCP, USB, or serial No For models whose vendor maintains the SDK long term. Track the SDK’s bitness, dependent runtimes, and signing updates
Vendor SDK that internally calls a Windows queue or driver Yes Even when kept as an existing asset, it stops when the internal queue is removed by WPP. It is not an escape route independent of the spooler
Sending the printer language directly over a TCP socket No For network-connected label printers. Design for disconnection, retransmission, and timeouts
Sending directly over serial (virtual COM) or USB No For receipt printers and devices installed alongside measuring equipment. Requires choosing among virtual COM, HID, and WinUSB
Printing through the IPP class driver (IPP / IPP over USB) Yes; WPP compatible if the conditions are met Check Mopria certification, IPP enablement and reachability on the network, and the USB operating mode. Not a path that leaves the spooler

For TCP reconnection design, the thinking in Serial Communication App Pitfalls applies. For choosing a USB method, see How to Work with USB Devices from a Windows App. IPP is disabled by default on some printers and must be enabled.4

The name “SDK” alone does not tell you whether a path is independent. Use the SDK documentation and the list from 5.1 to confirm whether it talks to the device directly or ends up calling a Windows queue.

When a Windows queue is used, Universal Print is on the WPP-compatible side, but it too goes through the spooler. A queue that is neither the IPP class driver nor Universal Print stops under WPP if it is a third-party driver, XPS, or fax, and an inbox queue not listed for removal, such as Microsoft Print to PDF, is judged individually. “WPP compatible” and “spooler independent” are different classifications.

Flow for deciding whether an output path depends on the spoolerIf the candidate path sends to a Windows print queue, then a queue on the IPP class driver whose printer is Mopria certified and, for network connections, has IPP enabled and reachable or, for USB connections, is in IPP over USB mode, and a Universal Print queue as part of Windows Ready Print, depend on the spooler but are WPP compatible; queues on non-Mopria-certified devices or third-party drivers, and queues removed per the chapter 4 table such as the XPS Document Writer and fax, can stop under WPP; inbox queues not listed for removal such as Microsoft Print to PDF are judged individually as in 5.1; if it does not send to a queue, an SDK that internally calls a queue or driver returns to the same judgment, while an SDK that does not or a path that sends directly to the device is an escape route that does not depend on the spoolerYesYesYesYesNoNoNoYesNoYes (third-party driver, XPS, fax)No (Print to PDF etc.)NoYesYesNoNoCandidate output pathSends to a Windows print queue?Queue on the IPP class driver?Mopria certified?IPP reachable? (USB: over USB)Depends, but WPP compatibleDepends, and can stop under WPPUniversal Print queue?Removed per the chapter 4 table?Judge individually (5.1)Goes through a vendor SDK?Calls a queue or driver internally?Check: SDK docs and the 5.1 listEscape route with no dependency

Figure 22: It comes down to which queue the path ultimately goes through; apart from a queue on the IPP class driver for a Mopria certified device and a Universal Print queue, everything except inbox queues not listed for removal can stop under WPP.

7. Verification Procedure — With and Without WPP

First confirm the branch of the verification depending on whether you use WPP or not. In both cases, keep the output from before the change and verify with the print destinations you actually use.

Print verification procedure split by whether WPP is usedReproduce all queues on a test machine and save the output from before the change; if WPP is used, enable it, record the removed queues, compare the output after re-registering compatible devices, and check the alternative path for incompatible devices; if it is not used, redetect physical devices subject to the IPP ranking change with WPP disabled and compare the output, and for everything else confirm printing on the actual queuesYesNoYesNoReproduce and record all queuesSave the print results from before the changeUse WPP?Enable and record the removed queuesRe-register compatible devices as neededCompare with the same prints as beforeCheck incompatible devices on the alternative pathPhysical device subject to IPP ranking change?Remove and redetect with WPP disabledConfirm printing on the actual queuesRecord the results and restore the test machine

Figure 23: The output from before the change is the common baseline, and only environments that use WPP enable it. Environments that do not use it check the IPP ranking change and printing on the actual queues.

7.1 Common Preparation: Reproduce Every Print Destination on a Test Machine, Not in Production

Use a PC running Windows 11 24H2 or later for verification, and do not do it on a production PC. For network connections, a VM that can reach the same printers is enough. To evaluate USB re-registration or direct communication, use a physical test machine, unless the VM can pass through the same USB interface.

Regardless of whether WPP is used, steps 1 and 2 below preserve the state before the change.

  1. Reproduce every queue the app uses in the field. Install not only the physical printers on vendor drivers but also third-party PDF virtual printers and inbox queues such as Generic / Text Only, in the same configuration. Record the driver names and versions with the script from 5.1. The removal diff can only judge queues that exist on the test machine.
  2. Run through the printing features and save the output. Check the paper, tray, duplex, and copies settings screens, the printing of each report, PDF output, and label printing, to create a baseline for later comparison.
Queues to reproduce on the test machineOf the queues the app uses as found by the 5.1 inventory, reproduce the physical printers on vendor drivers, the virtual printers such as third-party PDF, and the queues on inbox drivers such as Generic / Text Only, all on the test machine in the same configuration as the field, showing that the removal list in step 3 can only judge queues that exist on the test machine5.1 inventory: queues the app usesPhysical printers (vendor drivers)Virtual printers (third-party PDF etc.)Inbox drivers (Generic / Text Only etc.)Reproduce on the test machine in the same configurationJudge survival with the step 3 removal listMissing queues do not appear in the removal diff

Figure 24: A queue absent from the test machine does not appear in the removal diff, so first reproduce every queue the inventory found.

7.2 Environments That Use WPP: Enable It and Verify, Including the Print Destinations That Disappeared

After steps 1 and 2, proceed in the following order.

  1. Enable WPP and record the queues that are removed. Choosing “Set up” under “Windows protected print mode” in “Printers & scanners” in the Settings app shows the removal targets in a dialog.2 When enabling through Group Policy, no dialog appears, so save the Get-Printer result before applying the policy and restart the test machine after applying it. Confirm it is enabled with IsProtectedPrintEnabled or the Settings screen, then take the list again and record the diff.14
  2. Reinstall the removed compatible printers. Reinstall them with Windows Ready Print and confirm with the 5.1 script that the physical printer’s DriverName has changed to Microsoft IPP Class Driver.
  3. Repeat the same prints and compare with before the change. Check the choices on the settings screens, the restoration of saved settings, and the loss of print destinations due to queue name changes. Also match the margins, fonts, and rules of the output against the output from step 2.
  4. Print incompatible devices through the alternative path from chapter 6. Reproduce the state in which “the printer is not in the list” and confirm that output still works. Not only the code you fixed but also the path you provided is a verification target.

7.3 Environments That Do Not Use WPP: Verify the Change in Driver Selection Without Enabling It

In an environment where you have decided not to use WPP, do not perform steps 3 and 4. Enabling WPP removes whole queues, which hides the effect of ranking alone.

Print destination What to do after steps 1 and 2
Physical IPP-capable device subject to the ranking change With WPP disabled, remove, redetect, and reinstall it on the test machine. Confirm with the 5.1 script whether it changes to the IPP class driver, and perform the comparison from step 5
Cloud and virtual queues There is no physical device to redetect and no ranking change, so confirm the output from step 2 on the queues actually used

7.4 Restore After Verification and Prepare the Provisioning Procedure

A test machine on which WPP was enabled in the local Settings app can be restored with “Turn off”. If it was applied from Group Policy or Intune, an administrator-side policy change is required, so prepare a restore procedure that matches the enabling path.213

Turning WPP back off leaves the printers reinstalled with Windows Ready Print as they are. Printers that were incompatible are reinstalled manually.210

For provisioning, build the WPP policy and the printer re-registration procedure into the distribution mechanism laid out in From Group Policy to Intune. Third-party driver distribution through Point and Print has required administrator credentials by default since KB5005652 in 2021,34 and under WPP the distribution itself no longer happens.9 In environments that use WPP, replace procedures that depend on driver distribution with this policy application and re-registration procedure.

Revising the provisioning procedureThe procedure that distributed third-party drivers through Point and Print is dropped because administrator credentials have been required since 2021 and under WPP the distribution itself no longer happens, and in its place the WPP policy (Group Policy or OMA-URI) and the printer re-registration procedure are built into the distribution mechanismDistribute third-party drivers through Point and PrintAdministrator credentials required since 2021No distribution at all under WPPDrop from the procedureBuild in the WPP policy and re-registration procedure

Figure 25: The procedure for distributing drivers is replaced by a procedure for distributing the WPP policy and printer re-registration.

8. Summary

The required response is decided in the order “does the print destination survive?” → “what does the code depend on?” → “under which conditions do we verify?”.

Finding Response
The queue does not survive WPP and the physical printer cannot be re-registered First provide another path or decide not to use WPP
Driver-specific settings are saved Save intent instead of state, and check capabilities immediately before printing
Depends on queue names or virtual printers Provide existence checks, logging, notification, and reselection of the print destination. Generate PDFs directly with a library
The pass-through for RAW sending disappears under WPP Provide a path that does not depend on the spooler
The print destination is secured, and the app only draws without depending on a specific driver Do not rewrite across the board; verify the actual output

Fixing one thing is not the end. After fixing the settings, go on to check queue names, virtual printers, and RAW sending, and finally confirm the output as in chapter 7. On devices where the IPP ranking change can happen even without WPP, you need the dependency inventory and the redetection verification with WPP left disabled.

Decision tree for whether to fix or only verifyFirst decide whether the destination queue survives WPP (a Universal Print cloud queue or a WPP-supported virtual printer) or whether the physical printer can be re-registered with Windows Ready Print; if not, choose between providing another path and not using WPP; if the device supports IPP and can be replaced by the ranking change, check in order for saving driver-specific settings, dependencies on queue names or virtual printers (including inside SDKs and libraries), and RAW sending, fixing each that applies before moving on; finally, environments that use WPP go to the chapter 7 WPP-enabled verification, environments that do not send physical IPP-capable devices to the redetection verification with WPP disabled and cloud or virtual queues to actual output checks, and if WPP is not used and replacement has no effect, keep operating on the current pathNoProvide another pathDo not use WPPYesNoYesNoYesYesNoYesNoYesNoYesNoYesNoDoes the queue survive WPP or can it be re-registered?What to doSupports IPP and can be replaced?Supports IPP and can be replaced?Are driver-specific settings saved?Verify only (chapter 7)Keep operating on the current pathFix (5.2)Depends on queue names or virtual printers?Including dependencies inside SDKs and librariesFix (5.3, 5.4)Sends RAW to a queue that does not survive WPP?Provide a pass-through (chapter 6)Use WPP?Physical IPP-capable device?Redetection verification without WPP (7.3)Confirm output on the actual queues

Figure 26: First decide whether the queue survives WPP; for code dependencies, move on to the next check even after fixing one, and verify the fixed path at the end. If WPP is not used, verify not with the chapter 7 WPP enablement but by redetecting physical IPP-capable devices with WPP disabled and by actual output on cloud and virtual queues.

Put the Preparation Deadline on Your Own Rollout Plan, Not on Microsoft’s Dates

WPP is said to become enabled by default in the future, but no date is given.10 Put the preparation deadline before you enable WPP yourself, or before you roll out the Windows 11 24H2 or later feature update to the field. July 1, 2027 is a milestone on the driver supply side, not a deadline for business apps.1

Where to put the preparation deadline on the business app sideTake the list and inventory now, finish the path changes and verification by your own deadline, meaning before you enable WPP yourself or before you roll out the 24H2 or later feature update; the driver update stop on July 1, 2027 is a supply-side milestone, not the preparation deadline, and the goal is to reach a state unaffected by the default enablement of WPP, whose timing is undetermined, whenever it comessupply-side milestone, not a deadlineNow: take the list and inventoryPath changes and verificationDeadline: before enabling WPP yourself / before rolling out the feature updateUnaffected when WPP becomes enabled by default (timing undetermined)July 1, 2027: driver updates stop

Figure 27: Put the deadline on your own rollout plan, and do not make Microsoft’s milestone dates your cutoff.

Start by taking the list at each customer site and understanding the dependencies on settings, print destinations, and output paths. Generate PDFs directly, and keep one path for labels and receipts that is independent of the print stack. Then verify printing under the actual rollout conditions.

Environments that stay on Windows 10 are outside the scope of this plan, but support for Windows 10 (22H2) on the regular channel ended in October 2025. Enterprise LTSC and IoT Enterprise LTSC have different end dates per edition, so check the lifecycle. For decisions involving ESU and LTSC, see Practical Options After Windows 10 End of Support, and for industrial PCs, Which Windows Should You Put on an Industrial PC?. Preparation for printing is not complete until you redo the chapter 7 verification on the Windows 11 you migrate to.

KomuraSoft LLC handles inventorying the printer driver dependencies of business apps with report and label printing, reworking print paths (direct PDF generation, direct control of label printers), and designing verification plans that assume Windows protected print mode.

References

  1. Microsoft Learn, End of servicing plan for third-party printer drivers on Windows. On the timeline updated in May 2025 (January 15, 2026, July 1, 2026, and July 1, 2027), the scope being Windows 11 and later and Windows Server 2025 and later, existing drivers remaining installable with no plan to disable v3/v4 functionality, the three signing exception conditions (no Mopria certification, Windows 10 or earlier as the highest target, native ARM64), USB devices being able to use each function only in IPP over USB mode, and the Microsoft IPP Class Driver shipping with Windows 10 21H2 and later.  2 3 4 5 6 7 8 9 10

  2. Microsoft Learn, Overview of Windows protected print mode. On printers using third-party drivers being uninstalled and removed from the driver store when it is enabled, printers installed with a third-party driver needing reinstallation even when Mopria certified, unsupported software printers (such as OneNote (Desktop)), XPS, and fax being removed, users being unable to turn it off when enabled through Group Policy, and the procedure for enabling and disabling it from the Settings app.  2 3 4 5 6 7 8

  3. Microsoft Learn, Step 2: A Driver Package for the Device is Selected. On Windows ranking each package when several driver packages match and installing the one with the best rank, and choosing by date and version when ranks tie. 

  4. Microsoft Learn, IPP printers with the Universal Print Connector. On the Microsoft IPP Class Driver being the inbox driver that communicates with Mopria certified printers over IPP, and IPP being disabled by default on some printers and needing to be enabled.  2

  5. Microsoft Learn, Legacy printer driver submission process. On printer driver submissions, whether WHQL or Attestation, being blocked by default after January 15, 2026 and becoming a manual review with a justification document attached. 

  6. Microsoft Learn, Windows Print Path Overview. On Windows having two main print paths, the GDI print path and the XPS print path. 

  7. Microsoft Learn, Discover Windows Ready Print. On Windows Ready Print being the name covering IPP, eSCL, and Universal Print, requiring no third-party driver, being designed for Mopria certified printers, and being independent of the PC’s architecture. 

  8. Microsoft Learn, Universal Print troubleshooting - Understanding the stages of a print job. On Universal Print printers using the inbox Universal Print class driver, and the spooler sending jobs to the service over IPP over HTTPS.  2 3

  9. Microsoft Learn, More information on Windows protected print mode for enterprises and developers. On printing bugs accounting for 9% of MSRC cases over the previous three years, the spooler running as SYSTEM and loading third-party code, old drivers being incompatible with CFG/CET/ACG, IPP being HTTP POST based and identified by URI with a few PDLs such as PWG Raster and PDF rendered on the client, the module-loading restrictions, user-privilege XPS rendering, restricted token, prohibition of child process creation, and binary mitigations under WPP, and Point and Print no longer installing third-party drivers.  2 3 4 5 6

  10. Microsoft Learn, Windows protected print mode FAQ. On incompatible printers not being reinstallable while it is enabled and needing manual reinstallation after it is disabled, proprietary features being provided through a Print Support App, and Windows protected print mode becoming enabled by default at some future point.  2 3 4

  11. Microsoft Learn, Printer driver isolation. On the meaning of the isolation modes (Shared / Isolated / None), drivers that do not declare the INF DriverIsolation keyword running inside the spooler process by default, and administrators being able to override each driver’s setting from the Print Management console or spooler functions.  2

  12. Microsoft Learn, What’s new in Windows 11, version 24H2. On Windows protected print mode being added in 24H2 and enabled from the Settings app or Group Policy. 

  13. Microsoft Learn, Policy CSP - Printers: ConfigureWindowsProtectedPrint. On the applicable OS being Windows 11 24H2 and later, it being disabled by default with no restrictions on drivers or printing features, and the ADMX-mapped registry key Software\Policies\Microsoft\Windows NT\Printers\WPP and value WindowsProtectedPrintGroupPolicyState 2 3 4 5

  14. Microsoft Learn, Windows protected print mode for enterprises. On the procedure for enabling it with the Group Policy “Configure Windows protected print”, the Intune OMA-URI, and a client with WPP enabled being unable to manage a server with WPP disabled from Print Management.  2 3

  15. Microsoft Learn, WindowsProtectedPrintInfo.IsProtectedPrintEnabled Property. On the static property introduced in Windows 11 24H2 that returns whether WPP is enabled on the current device. 

  16. Microsoft Learn, Get-PrinterDriver. On returning the list of printer drivers on the specified computer without requiring administrator credentials. 

  17. Microsoft Learn, PnPUtil Command Syntax. On /enum-drivers enumerating third-party driver packages, /class narrowing by class name on Windows 11 21H2 and later, and running it from a Command Prompt opened as administrator.  2

  18. Microsoft Learn, How to display printer status in a UWP device app. On the procedure for telling v3 from v4 with get-printer | Select Name, {(get-printerdriver -Name $_.DriverName).MajorVersion}

  19. Microsoft Learn, PnPUtil. On inbox packages being excluded when enumerating packages in the driver store, so that only non-inbox packages are listed. 

  20. Microsoft Learn, PrintQueue.QueueDriver Property. On retrieving the printer driver a queue uses as a PrintDriver

  21. Microsoft Learn, PrintServer Class. On the classes in the System.Printing namespace not being supported for use within a Windows service or ASP.NET application, where they may cause degraded performance or runtime exceptions. 

  22. Microsoft Learn, DEVMODEW structure (wingdi.h). On driver-defined private members being allowed immediately after the public members with their size given by dmDriverExtra, and Windows validating only the public part, so that corrupt data in the private part can crash the driver. 

  23. dotnet/winforms (GitHub), PrinterSettings.cs. On SetHdevmode copying the dmDriverExtra bytes of the private area internally and GetHdevmode writing them back, and no other path holding the private area. 

  24. Microsoft Learn, PrinterSettings Class. On the .NET Framework declaration carrying the Serializable attribute and the .NET declaration not, and GetHdevmode and SetHdevmode converting to and from DEVMODE 2

  25. Microsoft Learn, SerializableAttribute Class. On all fields, private and public, being serialized by default in a type marked with the Serializable attribute, and the NonSerialized attribute being used to exclude them. 

  26. Microsoft Learn, PaperSize.RawKind Property. On RawKind being an integer that represents a standard paper kind value or a custom value. 

  27. Microsoft Learn, PaperSourceKind Enum. On Custom, representing a printer-specific paper source, being defined in addition to standard paper source kinds such as Upper and Lower 2

  28. Microsoft Learn, Print Schema. On the Print Schema allowing third-party extensions and private Property elements having to belong to a namespace clearly associated with that third party. 

  29. Microsoft Learn, Print Schema-Related Technologies. On the PrintTicket being the successor to DEVMODE, and device-specific PrintTickets being able to contain private extensions for particular models. 

  30. Microsoft Learn, How to: Validate and Merge PrintTickets. On the procedure of checking the printer’s supported features with PrintQueue.GetPrintCapabilities and merging and validating the request into a printer-specific valid PrintTicket with MergeAndValidatePrintTicket

  31. Microsoft Learn, ConflictStatus Enum. On MergeAndValidatePrintTicket having the driver replace unsupported settings and return a valid ticket, and reporting that a replacement took place through ConflictResolved in ValidationResult.ConflictStatus

  32. Microsoft Learn, WritePrinter function. On the procedure from StartDocPrinter to EndDocPrinter, the document having to fully describe DEVMODE-equivalent settings in the hardware’s language when the data type is “RAW”, and WritePrinter being a blocking function that can make the app appear unresponsive when called from the UI thread. 

  33. Microsoft Learn, RAW data type. On RAW data being sent to the print monitor without further processing, with a file consisting of PCL commands as an example. 

  34. Microsoft Learn, Printing issue troubleshooting guidance. On the change in Point and Print default behavior since KB5005652 that requires administrator credentials, and the case in which USB-connected receipt and label printers stopped printing after a 2021 update and the problem was resolved by a Known Issue Rollback.  2

Recent articles sharing the same tags. Deepen your understanding with closely related topics.

These topic pages place the article in a broader service and decision context.

This article connects naturally to the following service pages.

Frequently Asked Questions

Common questions about the topic of this article.

Will the printers and apps that work today suddenly stop printing once July 2026 or July 2027 passes?
No. Microsoft's plan is a phased cutoff on the supply side: new third-party drivers are no longer published to Windows Update, driver ranking prefers the IPP class driver, and updates are no longer accepted. The plan explicitly states that it does not disable existing drivers, and existing drivers can still be installed from vendor-supplied installers. The dangerous situations are, on devices the IPP class driver matches, the moment a PC is replaced or the OS is reinstalled and the driver is automatically replaced by the IPP class driver, and the moment Windows protected print mode is enabled.
Is Windows protected print mode enabled by default?
As of this writing (September 2026) it is disabled by default, and it is enabled from the Settings app, Group Policy, or Intune. However, Microsoft's FAQ states clearly that it will be enabled by default at some future point. No date is given, so the preparation is to reach a state where enabling it causes no trouble before that happens.
What happens to label printers and receipt printers?
Printers that cannot obtain Mopria certification are listed among the conditions under which driver signing continues to be allowed as an exception after January 15, 2026. So a vendor driver may remain available for the time being, but in an environment where Windows protected print mode is enabled, printers that use third-party drivers are uninstalled, so they cannot be used as they are. Having a vendor SDK that talks to the device directly over TCP, USB, or serial, or a path that drives the printer by sending its printer language directly, isolates you from changes in the Print Spooler. An SDK that internally calls a Windows queue or driver stops just the same when the third-party driver disappears, so it is not an escape route.
Can the app's printing code stay on PrintDocument?
The GDI print path and the XPS print path remain, and Microsoft states clearly that it has no plans to disable v3/v4 driver functionality. An app that only draws with PrintDocument or FixedDocument is something to verify, not something to fix. What needs fixing is code that saves and restores driver-specific settings (the private part of DEVMODE or a private namespace in a PrintTicket), code that depends on a specific queue name or virtual printer name (including what a vendor SDK or report library calls internally), and code that sends RAW data through the spooler to a queue that does not survive WPP (such as a queue on a vendor driver). However, if the destination printer itself is a model that cannot be re-registered with Windows Ready Print, the whole queue disappears under Windows protected print mode even when the code only draws, so providing another path comes first.
Where should I start?
Start by taking a list of the printers and drivers at each customer site. PowerShell's Get-Printer and Get-PrinterDriver tell you which queue uses which driver (v3 or v4, or the IPP class driver) without administrator rights. Next, match that list against the queues the app names explicitly, saves settings for, or sends RAW data to, and sort them into 'leave as is', 'verify', and 'change the path' using the decision table in this article.

Author Profile

Profile page for the article author.

Go Komura

Representative of KomuraSoft LLC

Focused on Windows software development, technical consulting, and investigations into failures that are difficult to reproduce.

Back to the Blog