Fix 0X0000028E: Driver failed to load because old version still in memory
A driver can't load because a stale copy is stuck in memory. Reboot clears it, but the real fix is updating or removing the old driver properly.
Quick answer
Reboot the machine. That clears the old driver from memory. Then uninstall the current driver completely and install the correct version. If the error returns on reboot, you've got a driver that loads at startup and fails—find it in Device Manager or use Driver Verifier.
What's actually happening here
Windows error 0X0000028E means the system tried to load a driver, but a previous version of that same driver is still resident in kernel memory. This usually happens during a driver update that didn't finish cleanly—the installer removed the old driver file but the running copy never got unloaded. Or you've got two drivers claiming the same device ID and the one that loads first blocks the second. The kernel keeps a reference count on loaded modules; until that count hits zero, the driver image stays in memory. A reboot is the nuclear option because it resets the entire kernel memory space. But if the same driver re-installs automatically and fails again, you need to stop it from loading at boot.
Fix steps
- Reboot the system. Sounds trivial, but this is the only guaranteed way to flush the stuck driver. Don't skip it. After reboot, check if the error reappears immediately. If yes, proceed.
- Identify which driver is failing. Open Event Viewer (eventvwr.msc), go to Windows Logs > System. Filter by event ID 219 or source 'Kernel-PnP'. Look for the error 0X0000028E—it should list the driver name. Common culprits: old GPU drivers (nvidia, amd), storage controllers (storahci, iaStor), network adapters (e1dexpress, rt640x64).
- Uninstall the broken driver completely. Open Device Manager, find the device under the relevant category (e.g., Display adapters). Right-click > Uninstall device. Check 'Delete the driver software for this device' if it's a known troublemaker. Then reboot again—Windows will pick a generic fallback driver.
- Install the correct driver fresh. Download the latest stable driver from the hardware vendor's website. Not from Windows Update, not from a third-party driver updater. Run the installer as Administrator. Choose 'Clean installation' if the installer offers it (NVIDIA and AMD both have this option).
- If the error still happens on reboot, the driver is loading too early. Use Autoruns (Microsoft Sysinternals) or msconfig to disable the driver from loading at startup. In Autoruns, go to the 'Drivers' tab, find the driver by name, uncheck it. Test with a reboot. If the problem stops, put the driver back and try an even older version or contact the vendor.
Alternative fixes if the main one fails
- Clean boot. Run msconfig, select 'Selective startup', uncheck 'Load startup items'. Then on the Services tab, check 'Hide all Microsoft services' and disable all third-party services. Reboot. If the error vanishes, re-enable services in small groups to find the conflict.
- Use Driver Verifier. This is an advanced tool. Run
verifier.exeas Administrator, choose 'Create custom settings', select 'Force IRQL checking' and 'Pool tracking'. Then select 'Select driver names from a list'. Add the suspect driver. Reboot—if Verifier catches a violation, it'll blue screen with more info. This is how you prove a driver is corrupt or conflicting. - Check for duplicate INF files. Open
C:\Windows\INFand look forsetupapi.dev.log. Search for '0x0000028E' in that log—it'll show which INF file failed. Delete or rename the offending INF (make a backup first), then reboot.
Prevention tip
Never install a driver while a previous version's uninstall is still running. Always let the old uninstaller finish, then reboot before installing the new driver. Also, avoid using 'update driver' from Device Manager—it often pulls the wrong version. Go straight to the vendor's site. If you're switching GPU brands (say from NVIDIA to AMD), use DDU (Display Driver Uninstaller) in Safe Mode to nuke all traces of the old driver before installing the new one. That alone prevents 90% of these errors.
Was this solution helpful?