| Previous | Next |
| ERROR_FLOAT_MULTIPLE_TRAPS | ERROR_DRIVER_FAILED_SLEEP |
ERROR_NOINTERFACE
What this result means
ERROR_NOINTERFACE is a Windows system result. This result usually indicates an interface negotiation failure, commonly analogous to COM E_NOINTERFACE. The object exists, but it does not implement the requested contract for the supplied interface identifier or version.
Likely causes
- the caller requested the wrong IID or interface version
- the component is older than the caller expects
- aggregation, marshaling, or proxy registration exposes a different interface set
- a wrapper forwarded the query to the wrong underlying object
Where this code is usually encountered
- COM QueryInterface is asked for an IID the object does not implement.
- Client and server versions disagree about an optional interface.
- A proxy/stub, registration, or apartment boundary exposes a different object than expected.
Useful evidence
- the requested IID and object class/CLSID
- client and server binary versions and bitness
- activation path, apartment model, and marshaling route
- registration and proxy/stub configuration for custom interfaces
Troubleshooting steps
- Log the IID symbolically and identify which object actually received QueryInterface.
- Verify that the interface is documented for that class and product version.
- Test in-process and out-of-process activation separately to isolate marshaling or registration.
- Use a documented fallback interface when the requested capability is optional.
Guidance for developers
QueryInterface failure for an optional interface is normal capability negotiation. Check HRESULT precisely, release every acquired interface, and avoid unsafe casts that assume implementation.
Guidance for administrators
Repair registration only when the interface should be present and deployment is incomplete. Installing arbitrary DLL registrations can create larger COM version conflicts.
How to interpret it correctly
E_NOINTERFACE concerns object capability. CLASS_E_CLASSNOTAVAILABLE and REGDB_E_CLASSNOTREG concern locating or activating the class itself.
Example failure pattern
A version-tolerant COM client may request a newer IID, receive E_NOINTERFACE, and continue through an older supported interface. A brittle client instead treats capability negotiation as installation corruption. Logging both IID and CLSID makes the difference obvious.
Retry and recovery policy
Fallback is appropriate only when the interface is documented as optional. Repeated QueryInterface calls cannot add capability; activation or registration repair is relevant only when deployment guarantees that the interface should exist.
References
Looking for a different code? Search another status or error code.