WinPE ADK 26100+ / 28000: CM_PROB_REINSTALL on all injected drivers — ROOT\KDNIC proves PnP regression, confirmed workaround

Daniel Sharp 20 Reputation points
2026-04-14T16:44:30.97+00:00

Environment:

ADK 10.1.26100.1, 26100.2454, 28000.1 / Windows 11 24H2 host Hardware tested: Intel gaming laptop (Realtek RTL8125), AMD desktop (Aquantia AQC107, Intel I211)

PROBLEM

All injected drivers in WinPE from ADK 26100+ are stuck with: Problem Code: 18 (CM_PROB_REINSTALL) Problem Status: 0xC0000493 (STATUS_PNP_REBOOT_REQUIRED)

WinPE never reboots, so the flag is never cleared. Devices are permanently non-functional. Network-based OS deployment fails completely.

KEY EVIDENCE — ROOT\KDNIC ROOT\KDNIC (Microsoft's own kernel debugger virtual NIC, pure inbox driver, no injection required) shows the identical CM_PROB_REINSTALL / 0xC0000493 on every affected machine. This conclusively proves the regression is in the WinPE PnP subsystem, not in any injected driver or injection methodology.

SCOPE ADK 25398.1 (Server OS 22H2 kernel) — works correctly ADK 26100.1 / 26100.2454 / 28000.1 (24H2 kernel) — all broken. The regression correlates precisely with the 22H2 to 24H2 kernel transition.

CONFIRMED WORKAROUND (production-tested) In startnet.cmd, after

wpeinit:

pnputil /enum-devices /problem 18 /format csv > %TEMP%\prob18.txt

for /f "usebackq skip=1 tokens=1 delims=," %%i in ("%TEMP%\prob18.txt") do

( pnputil /remove-device "%%i" )

pnputil /scan-devices

Note: /remove-device destroys the broken node entirely; scan-devices creates a fresh node without the flag. Note: CSV format required — standard pnputil text output has leading whitespace that causes the instance ID to be rejected.

REQUESTED FIX The PnP manager should detect the WinPE environment (via MiniNT registry key) and suppress STATUS_PNP_REBOOT_REQUIRED during device installation, since WinPE has no reboot cycle to resolve it. Full root cause analysis with diagnostic outputs, confidence assessments, and recommended fixes is available on request.

Microsoft Security | Intune | Configuration Manager | Deployment
0 comments No comments

2 answers

Sort by: Oldest
  1. AI answer

    2026-04-14T16:44:52.13+00:00

    The described WinPE 24H2 PnP regression and the specific CM_PROB_REINSTALL / STATUS_PNP_REBOOT_REQUIRED behavior for injected drivers and ROOT\KDNIC are not documented in the provided context, and no official fix or design note for ADK 26100+/28000 WinPE is available there.

    The context only covers:

    • Supported and recommended methods for injecting drivers into WinPE and install.wim (DISM, $WinPEDriver$, Drvload, unattend, scripts).
    • General guidance and limitations around $WinPEDriver$ and driver versioning.
    • How PnP status and problem codes are represented and retrieved.
    • How to permanently remove drivers and devices using Device Manager and pnputil.

    Within that scope, the only supported, documented mechanisms that are relevant to the workaround pattern are:

    1. PnP status / problem codes
      • Device status and problem codes are exposed via the unified device property model and CM__Get_DevNode_Status, and in newer Windows also via a problem status property that carries an NTSTATUS value such as STATUS_PNP_REBOOT_REQUIRED.
      • This matches the pattern being observed (Problem Code 18 with a problem status NTSTATUS), but the context does not document any WinPE-specific behavior or suppression of STATUS_PNP_REBOOT_REQUIRED.
    2. Removing driver packages and devices with pnputil
      • Official guidance for permanent removal of a driver package is to use pnputil /delete-driver <Published Name> /uninstall, which updates devices to another driver or leaves them without a driver if none is available. This is the supported way to ensure a driver is not automatically reinstalled.
      • The context also documents pnputil /disable-device and /enable-device for manipulating devices, but does not document /remove-device or /scan-devices, nor any WinPE-specific usage patterns.
    3. Driver injection into WinPE
      • For WinPE, the documented and supported approach is to inject drivers into boot.wim using DISM, or to use $WinPEDriver$ or Drvload in WinPE, with the key constraint that driver versions must be consistent across boot.wim and install.wim.
      • The article explicitly warns that mixing driver versions or loading conflicting drivers during the WinPE phase can cause drivers to be marked as “Bad” and not selected by PnP later.
      • However, there is no mention of CM_PROB_REINSTALL, STATUS_PNP_REBOOT_REQUIRED, or a requirement to reboot in WinPE.

    Given the available documentation, the only fully supported guidance that aligns with the scenario is:

    • Use the documented driver injection methods (DISM into boot.wim, $WinPEDriver$, or Drvload) and ensure driver versions are consistent between WinPE and the target OS image.
    • Use pnputil only as documented (for example, /delete-driver to remove driver packages, /disable-device and /enable-device to control devices).
    • For device status and problem codes, rely on the unified device property model or CM__Get_DevNode_Status for diagnostics, but there is no documented way in the context to change PnP’s STATUS_PNP_REBOOT_REQUIRED behavior in WinPE.

    The requested change—having the PnP manager detect WinPE (MiniNT) and suppress STATUS_PNP_REBOOT_REQUIRED—is not covered in the provided documentation, and no official fix or configuration knob is documented there. The workaround using pnputil /remove-device and /scan-devices is not described in the context and therefore cannot be validated or recommended based on it.

    For an official fix or design change to WinPE/ADK behavior, the appropriate path is to file feedback or a support case with Microsoft so the product team can investigate the regression and consider the requested behavior change.


    References:

    AI-generated content may be incorrect. Read our transparency notes for more information.

    Was this answer helpful?

  2. Pauline Mbabu 1,840 Reputation points Microsoft Employee
    2026-06-04T15:47:19.26+00:00

    Hello @Daniel Sharp ,
    This is a follow-up on the response above. If it helped answer your question, kindly mark it as Accepted Answer.

    If you need more help, please share additional details in the comments.

    Thanks!

    Was this answer helpful?


Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.