What's actually happening when you see 0XC00D138F
You're getting NS_E_NAMESPACE_TOO_MANY_CALLBACKS because a single namespace node in Windows Media has hit its callback limit. Every app, plugin, or service that registers to listen on that node counts toward the total. When the list is full, the next registration fails and Windows throws 0XC00D138F at you. I've seen this most often right after someone installs a third-party codec pack on top of an existing VLC, K-Lite, and a handful of browser extensions all fighting over the same media extension.
Real scenario from last month: a client's conference room PC started throwing this every time they opened Windows Media Player. Turned out three different apps had registered as the default handler for .mp4 and .mkv, and the callback list was full of dead registry entries from a trial they'd uninstalled six months earlier.
The fix follows a pattern: find the duplicates, remove them, then restart the media services. Here are the three most common causes in the order you should check them.
Cause 1: Leftover codec packs and duplicate media handlers
This is the culprit about 70% of the time. You installed K-Lite, or Shark007, or some trial version of a Blu-ray player, then uninstalled it. The uninstaller didn't clean up its namespace registrations. Now every time Windows Media tries to enumerate callbacks, it counts the dead ones and eventually runs out of room.
Open Registry Editor as admin and go here:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Media\CurrentVersion\Namespace\
You'll see a list of nodes. Expand each one and look for subkeys with names that don't match anything currently installed. Things like Shark007, Haali, Gabest, or vendor names you haven't used in months. Export a backup first — right-click the Namespace key and choose Export. Then delete the dead ones.
Also check the per-user side:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows Media\CurrentVersion\Namespace\
Same drill. Anything pointing at a file path that no longer exists is junk. Delete it. I usually run a quick check with a batch that tries to resolve each registered path and flags the ones that fail.
After that, restart the Windows Media Player Network Sharing Service:
net stop "WMPNetworkSvc"
net start "WMPNetworkSvc"
If the service name has spaces on your build, quote it — I've wasted ten minutes before realizing that. Reboot the machine afterwards, because the namespace cache doesn't always flush cleanly.
Cause 2: Browser extensions and shell handlers competing for the same node
Chrome and Edge both register shell handlers for media playback, and some extensions pile extra ones on top. If you've got a "download helper" extension, a "video saver" extension, and Windows Media Player all trying to hook the same .mp4 or .webm node, you can hit the limit fast.
Open Settings > Apps > Default apps and check what's set as the default for .mp4, .mkv, .avi, and .wmv. If more than two or three apps claim to handle each one, that's your problem. Set one default handler per file type and remove the rest.
Then check the shell handler registry path:
HKEY_CLASSES_ROOT\SystemFileAssociations\\.mp4\OpenWithProgids
Every entry here is a callback that Windows Media has to consider. If you've got six tools listed and only one installed, remove the stale ones. Same goes for .mkv, .avi, and anything else you actually play.
I've also seen this triggered by NVIDIA's GeForce Experience overlay and its video capture hooks. If you don't use ShadowPlay, disable it. That alone has cleared 0XC00D138F for a handful of clients.
Cause 3: Corrupted Media Foundation cache or a stuck callback registration
Less common but nastier. Windows Media Foundation keeps a cache of callback registrations under %LOCALAPPDATA%\Microsoft\Windows\Media Foundation. If it gets corrupted — power loss, bad shutdown, a buggy update — the count never decrements when an app unregisters, and the list fills up with phantom entries.
Close all media apps, then delete the cache:
rmdir /S /Q "%LOCALAPPDATA%\Microsoft\Windows\Media Foundation"
Windows recreates it on next launch. This won't hurt anything — the cache rebuilds itself. I've used this trick for years when Media Player starts behaving oddly and it's saved me from reinstalling Windows more than once.
If that doesn't do it, run a Windows Media Foundation reset:
dism /online /cleanup-image /restorehealth
sfc /scannow
Then reboot. This fixes cases where a system DLL that handles namespace enumeration got corrupted. Takes fifteen minutes but it's worth running once if the registry cleanup didn't fully resolve things.
One more thing: check Event Viewer under Applications and Services Logs > Microsoft > Windows > Media Foundation. If you see a specific third-party DLL name repeating right before each 0XC00D138F, that's your smoking gun. Uninstall whatever owns that DLL.
Quick reference
| Cause | Where to look | Fix |
|---|---|---|
| Leftover codec pack registrations | HKLM\SOFTWARE\Microsoft\Windows Media\CurrentVersion\Namespace\ | Delete dead subkeys, restart WMPNetworkSvc |
| Duplicate shell handlers | HKCR\SystemFileAssociations\\.mp4\OpenWithProgids and Default Apps | Set one default per file type, remove stale entries |
| Corrupted MF cache | %LOCALAPPDATA%\Microsoft\Windows\Media Foundation | Delete cache, reboot, run SFC and DISM if needed |
Back up the registry before you delete anything. I keep a .reg export on the desktop for a week after this kind of cleanup, just in case a client calls back about something else that broke.
If you've done all three and 0XC00D138F is still showing up, the callback is coming from something at the driver level. Grab a Windows Performance Recorder trace, filter on the Media Foundation provider, and look for which process is registering callbacks in a loop. That's rare, but it happens with older capture cards and a few USB tuners whose drivers never got updated for Windows 11.