Fix ERROR_FLT_DELETING_OBJECT (0x801F000B) – Filter Manager Bug
The filter manager is trying to delete a minifilter that's still attached. You'll see this during driver dev or antivirus conflicts. Quick reboot usually clears it.
What's Actually Happening Here
ERROR_FLT_DELETING_OBJECT (0x801F000B) means the Windows Filter Manager tried to tear down a minifilter driver attachment, but something still holds a reference to it. This typically happens in two real-world scenarios:
- Driver development: You loaded a test minifilter via
fltmc load, ran your tests, then tried to unload it — but a handle or callback context is still in use. - Antivirus or backup software: Products like McAfee, Trend Micro, or even some backup tools hook into the filter manager and can leave dangling attachments after an update or failed service restart.
The error itself is raised by FltDeleteAttachmentFilter or FltDetachVolume internally. The filter manager refuses to orphan a volume — it'll return this error instead of force-detaching. You'll see it in Event Viewer under FilterManager source, event ID 4 or 5, with the offending filter's name.
Let's walk through the fixes in order of effort. Stop when the error stops showing up.
Fix 1 – Reboot (30 Seconds)
Yes, really. The filter manager state is entirely kernel-mode. When a minifilter gets stuck during unload, a full system restart flushes all driver attachments, recalculates altitude ordering, and releases any orphaned contexts. No dirty state survives a cold boot.
- Close any affected applications (antivirus, backup software, file managers).
- Go to Start > Power > Restart. Not Shut Down + manual boot — use Restart so Windows fully reinitializes the I/O manager.
- After reboot, check if the error reappears. If not, you're done.
Why this works: Rebooting forces IopDeleteDriver to run for every driver, which calls FltUnloadFilter in a clean context. Any minifilter marked for deletion but still attached gets a final chance to release its references.
If the error comes back immediately after boot, you've got a persistent offender — move to Fix 2.
Fix 2 – Manually Unload the Stuck Minifilter (5 Minutes)
You need the minifilter's name. Check Event Viewer first:
- Press
Win + R, typeeventvwr.msc, hit Enter. - Expand Windows Logs > System.
- In the right pane, click Filter Current Log. Under Event sources, check FilterManager. Click OK.
- Look for Event ID 4 or 5. The description will say something like: “Filter 'YourFilterName' failed to detach from volume 'C:' with status 0x801F000B.”
Got the name? Good. Open an elevated command prompt (Win + X > Terminal (Admin)) and run:
fltmc instances
This lists all loaded minifilters, their altitudes, and volume attachments. Find the offending one. Then run:
fltmc unload <FilterName>
Replace <FilterName> with the actual name from Event Viewer (e.g., luafv, FileCrypt, or whatever your software uses). You'll get success if it unloads cleanly.
If that fails (you see a new 0x801F000B right there), you need to detach the filter from each volume first:
fltmc detach <FilterName> C:
Replace C: with the volume from the event. Then try the unload again.
Why this works: fltmc talks to the filter manager via the FltSendMessage IOCTL path. It requests a controlled teardown that respects the reference count. If the minifilter's own FilterUnloadCallback is buggy or missing, you'll still get the error — but often the manual unload succeeds where automatic unload failed because the caller's context is different.
Don't unload built-in Microsoft filters like FileInfo or Wof — you'll lose functionality. Stick to third-party ones.
Fix 3 – Disable the Offending Driver (15+ Minutes)
If the minifilter keeps re-loading at boot, it's either a service or a driver that starts automatically. You'll need to stop it from loading entirely.
Step 1 – Identify the driver binary
fltmc filters
This shows the minifilter's frame number, altitude, and whether it's manual or automatic start. You'll see a line like:
MyBuggyFilter 370000 auto MyBuggyFilter.SYS
Now find the driver's registry key:
reg query HKLM\SYSTEM\CurrentControlSet\Services\MyBuggyFilter
That returns the ImagePath (the .sys file) and Start value. Start=1 means automatic, Start=3 means manual.
Step 2 – Change the start type
To stop it from loading on next boot, set it to manual (so it doesn't load unless something explicitly requests it):
sc config MyBuggyFilter start= demand
Note the space after start= — sc is picky about that.
Step 3 – Reboot
Now reboot. The filter won't load. Check fltmc filters again after boot — the minifilter should be absent.
If you need to re-enable it later, use sc config MyBuggyFilter start= auto and reboot.
Why this works: The Filter Manager loads minifilters based on their registry start type during the IoInitSystem phase. By setting it to demand, the kernel won't call FltLoadFilter for it. The filter can still be loaded manually later with fltmc load — useful if you're debugging.
Fix 4 – Remove the Driver Completely (Advanced)
If the minifilter is something you're developing and you want it gone for good, don't just disable it — delete the service and the .sys file.
sc delete MyBuggyFilter
Then delete the driver file from C:\Windows\System32\drivers\. You'll need TrustedInstaller permissions or takeown the file first:
takeown /f C:\Windows\System32\drivers\MyBuggyFilter.sys
icacls C:\Windows\System32\drivers\MyBuggyFilter.sys /grant Administrators:F
del C:\Windows\System32\drivers\MyBuggyFilter.sys
Reboot. The filter is gone from the system entirely. No trace left for the filter manager to trip over.
Why this works: Deleting the service removes the registry key under HKLM\SYSTEM\CurrentControlSet\Services. Without that key, the I/O manager never sees the driver during boot enumeration. The Filter Manager never creates a filter object for it, so no attachment can go stale.
Still Stuck?
If none of these fixes work, you're likely dealing with a minifilter that has a kernel-mode handle leak — something holds a reference inside a volume's stream context. That's a driver bug, not something you can fix from user mode. Options:
- Run WinDbg kernel debug — break into the filter manager's
FltpDeleteAttachmentroutine and inspect the instance'sContextListHeadfor orphaned entries. - Contact the antivirus vendor whose filter is causing the error. They can patch their
FilterUnloadCallbackto properly wait for outstanding I/O.
For most people, Fix 1 or Fix 2 resolves it. Don't overthink this error — it's nearly always a timing issue, not hardware failure.
Was this solution helpful?