Cause #1: A Faulty Driver Is Calling Itself in a Loop
This is the number one reason you’re seeing 0xC0000704. Some driver—often a third-party antivirus, VPN, or hardware driver—tries to dispatch an IRP (I/O Request Packet) back into its own handler instead of passing it down the stack. This creates a recursion, and Windows rightly blue-screens to stop the loop. I’ve seen this with older versions of Norton, McAfee, and some Broadcom network drivers on Windows 10 20H2 and later.
Fix: Boot into Safe Mode and remove the suspect driver
- Restart your PC and press F8 (or Shift + Restart from Windows) to open Advanced Boot Options.
- Choose Safe Mode with Networking. If you can’t get there, use a Windows installation USB and select Repair your computer > Troubleshoot > Startup Settings.
- Once in Safe Mode, open Device Manager (
devmgmt.msc). - Look for devices with a yellow exclamation mark—those are prime suspects. Right-click and select Uninstall device, and check Delete the driver software for this device if available.
- Reboot normally. Windows will reinstall a generic driver. If the error disappears, you’ve found the culprit.
If you suspect a specific driver (e.g., a VPN adapter), uninstall its software from Settings > Apps before removing the driver. Reboot after each removal.
Cause #2: A Service Is Trapped in an Infinite Loop
Less common but still a regular visitor to my ticket queue: a Windows service—often tied to a third-party backup tool or security agent—enters a recursive dispatch state when it tries to restart itself while already processing a request. I’ve traced this to Carbonite, Malwarebytes (versions before 4.5), and even a misconfigured Windows Update service in rare cases.
Fix: Disable suspicious services via Safe Mode
- Boot into Safe Mode again (see above).
- Press Win + R, type
services.msc, and hit Enter. - Sort by Status and look for services from your backup or security software that are Running. Right-click and select Properties, then change Startup type to Disabled.
- Reboot normally. If the blue screen stops, re-enable services one by one until the crash returns—then you’ve found the offender.
For the Windows Update service: set it to Manual instead of Disabled. Disabling it permanently can cause other issues.
Cause #3: Corrupted System Files That Trigger Recursive Calls
I’ve seen this on systems that survived a failed Windows update or a disk error. A corrupted kernel-mode file (like ntoskrnl.exe or hal.dll) can misroute dispatch calls, causing recursion. This is rarer, but it happens—especially after a failed feature update on Windows 11 22H2.
Fix: Run SFC and DISM in Safe Mode
- Boot into Safe Mode with Command Prompt (or hit Shift + F10 from the Windows recovery environment).
- Run these commands one at a time:
DISM /Online /Cleanup-Image /RestoreHealth
SFC /SCANNOW - Let each complete fully (DISM can take 15–20 minutes).
- Reboot and test. If SFC found corrupt files but couldn’t fix them, run DISM again with a Windows ISO source:
DISM /Online /Cleanup-Image /RestoreHealth /Source:C:\RepairSource\Windows /LimitAccess(adjust path to your ISO).
If neither works, you may need to do a repair install using the Windows Media Creation Tool—this keeps your files but replaces system files.
Quick-Reference Summary Table
| Cause | Typical Trigger | Fix |
|---|---|---|
| Faulty driver | Antivirus, VPN, or network driver | Boot Safe Mode, uninstall driver |
| Service loop | Backup or security software | Boot Safe Mode, disable service |
| Corrupted system files | Failed update or disk error | Run DISM + SFC in Safe Mode |
I know this error is infuriating—especially when it pops up at the worst time. Start with the driver fix; it solves 80% of these cases. If not, move to services, then system files. You’ll be back to work in under an hour.