| Previous | Next |
| E_NOTIMPL | E_POINTER |
E_NOINTERFACE
Requested COM interface is not supported
E_NOINTERFACE is HRESULT 2147500034 (0x80004002) from winerror.h. AllStat describes it as “No such interface supported.” The value must be interpreted at IUnknown::QueryInterface, activation, aggregation, or a language projection requesting a particular IID, because the same high-level symptom can come from a different contract boundary and require different cleanup.
The decisive interpretation for E_NOINTERFACE is that the live object does not expose the requested IID under its current identity and aggregation rules. A diagnostic event for E_NOINTERFACE should retain both representations of the HRESULT and the exact API boundary that produced it.
Where the result appears
- E_NOINTERFACE may surface in IUnknown::QueryInterface, activation, aggregation, or a language projection requesting a particular IID.
- The first boundary to preserve for E_NOINTERFACE is the exact activation, initialization, call-control, or lifetime step that returned it.
- For E_NOINTERFACE, record whether the failure occurred before an object identity existed, while a method was running, or during shutdown; those phases imply different ownership and retry rules.
Before assigning cause to E_NOINTERFACE, identify the responsible thread, apartment, process, library generation, and server instance rather than relying on the final dialog text.
Typical causes and interpretation boundary
Common cause categories for E_NOINTERFACE are: the IID belongs to another component version; the caller queried the wrong object; aggregation or tear-off rules differ from the caller assumption. The candidate causes for E_NOINTERFACE are alternatives, so test one precondition at a time instead of applying several broad repairs together.
The check that separates E_NOINTERFACE from nearby HRESULTs is: the live object does not expose the requested IID under its current identity and aggregation rules. When the boundary condition behind E_NOINTERFACE has not been proven, avoid retries or repairs that assume a different neighboring HRESULT.
Evidence and telemetry
- Record E_NOINTERFACE together with the CLSID, IID, method or control operation, server type, process architecture, and component build.
- Capture E_NOINTERFACE evidence: requested IID; concrete CLSID and server build; controlling unknown identity; aggregation state; interface map discovered on the same object.
- Preserve the apartment model, thread ID, package or service identity, activation flags, UTC time, and correlation ID associated with E_NOINTERFACE.
- For E_NOINTERFACE, retain the earliest lower-level Win32, RPC, MSI, SxS, CLR, loader, or security event instead of logging only the final HRESULT.
- After E_NOINTERFACE, mark every returned interface pointer, handle, cookie, or output parameter as valid only when the owning API explicitly says so.
Telemetry for E_NOINTERFACE should be reproducible without copying secret values: prefer GUIDs, lengths, flags, sanitized names, and correlation IDs.
Diagnostic sequence
- Capture the raw value 0x80004002 and symbolic name E_NOINTERFACE before a wrapper translates it to a generic exception.
- Identify the exact COM entry point and lifecycle phase for E_NOINTERFACE: initialization, activation, QueryInterface, method execution, cancellation, registration, or teardown.
- Validate the decisive condition for E_NOINTERFACE: the live object does not expose the requested IID under its current identity and aggregation rules.
- Test the principal causes separately for E_NOINTERFACE: the IID belongs to another component version; the caller queried the wrong object; aggregation or tear-off rules differ from the caller assumption.
- Correlate client and server timelines, including process launch, class registration, RPC activity, security negotiation, and cleanup around E_NOINTERFACE.
- Change one precondition at a time, reproduce E_NOINTERFACE, and verify both the HRESULT and the object or server state after the call.
Correct handling and recovery
For E_NOINTERFACE, the appropriate recovery is to treat the capability as unavailable, query only documented interfaces, and select a compatible component or code path; do not cast an unrelated pointer. Before retrying E_NOINTERFACE, specify which precondition changed and how duplicate effects or stale outputs will be detected.
For E_NOINTERFACE, inspect every output before cleanup because interfaces, buffers, server effects, or metadata handles may be partially initialized.
Practical scenario
A plug-in requests a newer configuration interface from an older in-process server and disables only the optional settings panel.
Test E_NOINTERFACE by reproducing the smallest failing contract, recording postconditions, and then changing a single input or state transition.
Difference from related HRESULTs
CLASS_E_CLASSNOTAVAILABLE concerns creation of the class; E_NOINTERFACE occurs after an object identity exists but lacks the requested contract.
Keeping E_NOINTERFACE separate from its neighbor improves retry, cleanup, and user messaging because the two results imply different postconditions.
Developer and administrator guidance
Code handling E_NOINTERFACE should classify it by lifecycle and ownership rather than by the high bit alone. For <code>E_NOINTERFACE</code>, initialization failures normally require rebuilding the process or thread environment, capability results require a fallback, and uncertain remote outcomes require reconciliation before retry.
Operational dashboards should keep E_NOINTERFACE distinct from generic COM failures and attach deployment, service, package, runtime, policy, and architecture dimensions. Administrators should avoid broad registry edits, blanket firewall changes, or permission expansion unless the captured evidence for E_NOINTERFACE identifies that subsystem.
References
- Microsoft: COM error codes — official Microsoft documentation relevant to
E_NOINTERFACE. - Microsoft: COM processes, threads, and apartments — official Microsoft documentation relevant to
E_NOINTERFACE. - Microsoft: COM security defaults — official Microsoft documentation relevant to
E_NOINTERFACE. - Microsoft: HRESULT values — official Microsoft documentation relevant to
E_NOINTERFACE.
Looking for a different code? Search another status or error code.