| Previous | Next |
| REGDB_E_PACKAGEPOLICYVIOLATION | CAT_E_NODESCRIPTION |
CAT_E_CATIDNOEXIST
CATID does not exist
CAT_E_CATIDNOEXIST has hexadecimal value 0x80040160 (unsigned 2147746144, signed -2147221152). AllStat records “CATID does not exist”. The narrow interpretation is that The requested component category identifier is not registered. The failing stage is querying or updating category information through the Component Categories Manager.
The high bit in 0x80040160 is set, so this is a failure rather than a success or informational result. Its facility field is 4 (FACILITY_ITF) and its low 16-bit code is 352 (0x0160). Those bit fields classify the value, but they do not identify the failing object by themselves; the native method, object identity, and first producer of this result remain essential.
API stage
Understanding this result requires this subsystem context: Component categories are semantic identifiers, not merely friendly strings. Category definition, localized description, and class membership are separate records and should be diagnosed independently.
- Associate this result with one exact operation in the Component Categories Manager, ICatRegister, ICatInformation, CATID registration, and localized CATEGORYINFO descriptions.
- Confirm that this result came from querying or updating category information through the Component Categories Manager, rather than from cleanup or a wrapper that ran afterward.
- Preserve any IErrorInfo, underlying Win32 result, provider message, or callback failure that preceded it; the HRESULT alone should not erase a more specific cause.
Verification steps
- Capture it at the first native return before a wrapper maps it to a generic exception.
- Identify the exact object, method, and lifecycle phase involved in querying or updating category information through the Component Categories Manager.
- Log the exact CATID and operation, not only its friendly name.
- Enumerate registered categories through ICatInformation.
- Distinguish category definition from a class claiming membership in that category.
- Reproduce it with one controlled input or state change, and verify that the correction changes the decisive evidence rather than merely hiding the result.
Interpretation limits
- It can result when the CATID is mistyped, version-specific, or generated but never registered.
- It can result when component membership keys remain after the category definition was removed.
- It can result when the query runs in a registry scope or machine image where the category installer did not execute.
Incident record
A useful incident records the CATID, locale identifier, operation, registry scope, category description, enumerator result, class membership keys, and installation or uninstallation transaction. Also retain the application and component build, architecture, process and thread IDs, COM apartment, operation correlation ID, elapsed time, and the first state-changing event before the failure. When logging it, redact content and credentials while preserving types, lengths, hashes, opaque identities, and lifecycle generations needed to reproduce its contract.
- enumerate registered categories through ICatInformation.
Recovery conditions
Correction. for it, register the published category definition through ICatRegister or use a CATID present on the target system. Retry boundary. Retry after category installation or identifier correction; do not invent a description for an unknown CATID. Before repeating the operation, separate category definition changes from class-membership changes and roll back only the registration operation that failed.
Practical scenario
A plugin registers itself under a vendor CATID but the base product that defines the category is absent; installing the base category registration restores discovery. This isolates it within COM component categories and provides a regression test for the stated correction.
Difference from related HRESULTs
CAT_E_NODESCRIPTION means the CATID exists but lacks the requested localized description; it means the category itself is absent. Keep those outcomes separate in exception mappings, telemetry dimensions, user messages, and automated retry policy.
Developer and administrator guidance
Store CATIDs as stable identifiers, keep localized descriptions independent from membership, and enumerate current records before updating them. Regression coverage for it should include unknown CATIDs, missing localized descriptions, repeated registration, class membership without a definition, different locales, and uninstall ordering.
Operational repair for it must target the evidence-backed owner: repair category metadata through the owning component’s installer and verify both category definitions and class membership instead of editing only the friendly description. Retain before-and-after traces for it so the change can be attributed and reversed.
References
- Microsoft: generic COM error codes
- Microsoft: HRESULT values
- Microsoft: component categories
- Microsoft: ICatRegister
- Microsoft: ICatInformation::EnumCategories
Looking for a different code? Search another status or error code.
