| Previous | Next |
| TYPE_E_FIELDNOTFOUND | TYPE_E_UNSUPFORMAT |
TYPE_E_INVDATAREAD
Type library contains invalid or obsolete data
TYPE_E_INVDATAREAD is HRESULT 2147647512 (0x80028018) from winerror.h. The documented description is “Old format or invalid type library.” The value must be interpreted at LoadTypeLib, registry loading, or metadata parsing of a type library resource.
The type-library data cannot be parsed as a valid supported representation.
Where the result appears
- This result belongs to type-library and metadata processing around LoadTypeLib, registry loading, or metadata parsing of a type library resource.
- Identify the LIBID, major/minor version, LCID, SYSKIND, file path, resource ID, and the specific ITypeLib or ITypeInfo operation.
- Metadata consumers should treat this result as a contract-version or construction problem until file integrity, registry view, import dependencies, TYPEKIND, and builder phase are verified.
Typical causes and interpretation
Common cause categories are: the file is truncated; the resource is not a type library; binary data is corrupted; an obsolete format is encountered.
Evidence to preserve
- Record the HRESULT with the type-library path and hash, LIBID and version, LCID, architecture, source package, and producer toolchain.
- Capture file path and hash; resource ID; file version; architecture; parser result; signature and deployment source.
- Retain the exact type, member, field, name, MEMBERID, HREFTYPE, TYPEKIND, or registry path involved in the failing operation.
- When the failure occurs during type-library generation, record construction order, imported libraries, layout/finalization state, and output TLB hash.
- After the failing call, release TYPEATTR, FUNCDESC, VARDESC, BSTR, and interface resources using the matching API even when parsing or lookup fails.
Logs should expose enough structure to reproduce the failure without becoming a secondary store of sensitive input data.
Diagnostic sequence
- Capture the HRESULT (0x80028018) before a compiler, importer, or language runtime reduces the value to a generic metadata error.
- Verify the exact type-library identity, file/resource loaded, registry view, architecture, and operation that returned the HRESULT.
- Prove the relevant metadata condition: the type-library data cannot be parsed as a valid supported representation.
- Test the likely causes independently: the file is truncated; the resource is not a type library; binary data is corrupted; an obsolete format is encountered.
- For
TYPE_E_INVDATAREAD, enumerate the relevant TYPEATTR, members, imports, names, IDs, locales, and builder state instead of assuming source declarations match deployed metadata. - Rebuild or reload one corrected metadata generation and verify that the HRESULT no longer occurs without introducing a different identity or compatibility break.
Correct handling and recovery
The appropriate recovery is to restore the signed library from the matching package, verify the resource and hash, and do not register or consume partially parsed metadata.
Practical scenario
A deployment copies only part of a DLL containing the embedded type library; package repair restores the resource.
Difference from related HRESULTs
TYPE_E_UNSUPFORMAT says the format is recognized but unsupported; it emphasizes invalid data read from the library.
Developer and administrator guidance
Tools handling this HRESULT should pin type-library identity and version, avoid caching raw indices across versions, and preserve stable GUIDs and DISPIDs for published contracts. Repair for TYPE_E_INVDATAREAD should be performed by the metadata producer or installer, not by ad hoc registry edits in the consuming process.
Administrators should compare installed files and registration against the product manifest, repair the matching package, and keep 32-bit and 64-bit registry views explicit. For TYPE_E_INVDATAREAD, copying a TLB from another machine can silence lookup while creating a more dangerous ABI mismatch.
References
Looking for a different code? Search another status or error code.