| Previous | Next |
| RPC_E_UNEXPECTED | DISP_E_MEMBERNOTFOUND |
DISP_E_UNKNOWNINTERFACE
Automation invocation received an unknown interface identifier
DISP_E_UNKNOWNINTERFACE is HRESULT 2147614721 (0x80020001) from winerror.h. The documented description is “Unknown interface.” The value must be interpreted at IDispatch invocation where the reserved interface identifier must match the supported Automation contract.
The supplied riid is not the expected null IID for IDispatch or otherwise identifies an unsupported interface.
Where the result appears
- This result is returned while Automation binds or executes IDispatch invocation where the reserved interface identifier must match the supported Automation contract.
Map this result to one concrete invocation and one concrete object or metadata identity before interpreting the human-readable description.
Typical causes and interpretation
Common cause categories are: a caller passes a non-null IID; an interop declaration reorders parameters; a custom proxy uses the wrong dispatch contract. The evidence should distinguish configuration, lifetime, input, identity, resource, and version failures rather than grouping them.
Key distinction: the supplied riid is not the expected null IID for IDispatch or otherwise identifies an unsupported interface.
Evidence to preserve
- Record it with the object CLSID or ProgID, interface identity, member DISPID, dispatch flags, and type-library version.
- Capture riid value; IDispatch implementation; caller interop signature; Invoke or GetIDsOfNames call; proxy/stub version.
For privacy-safe diagnosis of it, capture the call schema and state transitions but hash or omit confidential payloads.
Correct handling and recovery
The appropriate recovery is to pass IID_NULL as required, correct the native signature, and obtain other interfaces through QueryInterface rather than IDispatch parameters.
Practical scenario
A hand-written P/Invoke declaration passes a type-library IID into IDispatch::Invoke; replacing it with IID_NULL fixes the call.
Difference from related HRESULTs
DISP_E_UNKNOWNNAME concerns a member name; it concerns the interface identifier argument.
References
Looking for a different code? Search another status or error code.