guidox / Hardware

Find Drivers That Fail to Load at Boot

TL;DR

Filter the System log for **7000**, **7009**, **7026** and **219** right after a restart. The message names the service or driver that did not start.

Before you start

Requirements

  • Admin rights
  • 5 minutes
Step by step

Instructions

01

Read the boot-time driver events

**7026** lists drivers that failed to load, **7000** names a service that did not start, and **219** reports a driver load failure with the status code.

Get-WinEvent -FilterHashtable @{LogName='System';Id=7000,7009,7011,7026,219} -MaxEvents 30 | Select-Object TimeCreated,Id,ProviderName,Message | Format-List
02

Narrow to the current boot

Old failures from previous boots add noise. Filtering by the last boot time shows only what is wrong now.

$boot = (Get-CimInstance Win32_OperatingSystem).LastBootUpTime
Get-WinEvent -FilterHashtable @{LogName='System';StartTime=$boot;Id=7000,7026,219} -ErrorAction SilentlyContinue | Select-Object TimeCreated,Id,Message | Format-List
$boot
03

Check the driver state now

A driver that failed at boot may have loaded later. The device status and the service state show the current reality, not the boot-time one.

Get-PnpDevice -Status Error | Select-Object Class,FriendlyName,Problem,InstanceId
driverquery /fo table | Select-String -Pattern 'False|Running' | Select-Object -First 10
driverquery /fo csv | ConvertFrom-Csv | Where-Object { $_.State -ne 'Running' } | Select-Object ModuleName,State
04

Match the failure to a device

The driver name in the event is the service name, not the device name. The service's binary path points at the driver file and its device class.

Get-CimInstance Win32_SystemDriver | Where-Object State -ne 'Running' | Select-Object Name,DisplayName,PathName,StartMode,State
sc.exe qc <drivername>
Get-ChildItem "$env:systemroot\System32\drivers" -Filter *.sys | Sort-Object LastWriteTime -Descending | Select-Object -First 5 Name,LastWriteTime
05

Fix the cause, not the symptom

A driver that fails at boot is usually a missing dependency or a wrong start type. An updated package or a corrected start type fixes it; forcing it to load does not.

Get-Service <drivername> | Select-Object Name,Status,StartType,RequiredServices
sc.exe qc <drivername>
sc.exe config <drivername> start= auto
Get-WinEvent -FilterHashtable @{LogName='System';Id=7026} -MaxEvents 3 | Select-Object TimeCreated,Message
06

Confirm after a restart

The only proof is a clean boot. Read the same events again after a restart and check that the list is empty for that driver.

Restart-Computer
Get-WinEvent -FilterHashtable @{LogName='System';Id=7000,7026,219} -MaxEvents 10 | Select-Object TimeCreated,Id,Message
Get-CimInstance Win32_SystemDriver | Where-Object State -eq 'Stopped' | Select-Object Name,StartMode,State
Troubleshooting

Common issues

The driver name is not in the service list

It was removed but the registry entry remains. Check the Services key for a stale entry and delete it after a backup.

The device works despite the error

A duplicate or legacy driver failed while the current one loaded. Remove the stale package from the driver store.

The failure appears only in safe mode

Safe mode blocks non-essential drivers by design. That error is expected and not a fault.

The status code is 0xC0000365

A dependency or the file itself is missing. Reinstall the driver package and check the dependencies with sc qc.

FAQ

Frequently asked

What is the difference between 7000 and 7026?

7000 is a service that failed to start, 7026 is the boot-time list of drivers that did not load. Both can name the same driver.

Should I set a driver to boot start?

No. Boot-start drivers are for storage and essential devices; changing a normal driver to boot start can prevent Windows from starting.

Can this cause a blue screen?

A failing storage or filter driver can. Check the dump for the driver name before you change any start type.

How to undo this

Set any start type you changed back with sc.exe config <name> start= demand, and reinstall the previous driver package if the update caused the failure.

Changelog · 1 entry
  1. 2026-11-01
    First version
Interactive version: checklist, feedback, related guides →

Free · no account needed · tracks your progress