What does HRESULT 0x80040161 (CAT_E_NODESCRIPTION) mean?

 
Previous Next
CAT_E_CATIDNOEXIST CS_E_PACKAGE_NOTFOUND

CAT_E_NODESCRIPTION

Description not found

When Windows returns CAT_E_NODESCRIPTION—HRESULT 2147746145, 0x80040161, signed -2147221151—AllStat describes the condition as “Description not found”. The actionable meaning is a registered component category has no description for the requested locale or usable fallback. The surrounding operation is retrieving CATEGORYINFO text while enumerating or displaying component categories.

The high bit in 0x80040161 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 353 (0x0161). 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 CAT_E_NODESCRIPTION remain essential.

Precise failure point

Understanding CAT_E_NODESCRIPTION requires this subsystem context: Component categories are semantic identifiers, not merely friendly strings. For CAT_E_NODESCRIPTION, category definition, localized description, and class membership are separate records and should be diagnosed independently.

  • Associate CAT_E_NODESCRIPTION with one exact operation in the Component Categories Manager, ICatRegister, ICatInformation, CATID registration, and localized CATEGORYINFO descriptions.
  • Confirm that CAT_E_NODESCRIPTION came from retrieving CATEGORYINFO text while enumerating or displaying component categories, rather than from cleanup or a wrapper that ran afterward.
  • Preserve any IErrorInfo, underlying Win32 result, provider message, or callback failure that preceded CAT_E_NODESCRIPTION; the HRESULT alone should not erase a more specific cause.

Diagnostic evidence

A useful CAT_E_NODESCRIPTION incident records the CATID, locale identifier, operation, registry scope, category description, enumerator result, class membership keys, and installation or uninstallation transaction. For CAT_E_NODESCRIPTION, 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 CAT_E_NODESCRIPTION, redact content and credentials while preserving types, lengths, hashes, opaque identities, and lifecycle generations needed to reproduce its contract.

  • For CAT_E_NODESCRIPTION, capture CATID, requested LCID, installed descriptions, and UI language chain.
  • For CAT_E_NODESCRIPTION, verify that category identity and class membership remain valid without the label.
  • For CAT_E_NODESCRIPTION, test neutral or product-default locale fallback according to application policy.

Resolution path

  1. Capture CAT_E_NODESCRIPTION at the first native return before a wrapper maps it to a generic exception.
  2. Identify the exact object, method, and lifecycle phase involved in retrieving CATEGORYINFO text while enumerating or displaying component categories.
  3. Capture CATID, requested LCID, installed descriptions, and UI language chain.
  4. Verify that category identity and class membership remain valid without the label.
  5. Test neutral or product-default locale fallback according to application policy.
  6. Reproduce CAT_E_NODESCRIPTION with one controlled input or state change, and verify that the correction changes the decisive evidence rather than merely hiding the result.

Distinct causes

  • CAT_E_NODESCRIPTION can result when the category was registered without the current LCID.
  • CAT_E_NODESCRIPTION can result when localization resources were omitted from installation.
  • CAT_E_NODESCRIPTION can result when the caller requests an overly specific locale and does not implement an appropriate fallback.

Retry policy

Correction. For CAT_E_NODESCRIPTION, show a stable CATID-based fallback or install the missing localized description while preserving category identity. Retry boundary. Retry after locale fallback or registration repair; do not treat a missing label as proof that member classes are unusable. Before repeating the CAT_E_NODESCRIPTION operation, separate category definition changes from class-membership changes and roll back only the registration operation that failed.

Practical scenario

A management console requests a Finnish category description from a component that registered only en-US; it displays the en-US label and CATID instead of hiding the plugins. This isolates CAT_E_NODESCRIPTION within COM component categories and provides a regression test for the stated correction.

Difference from related HRESULTs

CAT_E_CATIDNOEXIST means no category definition exists; CAT_E_NODESCRIPTION is a localization/metadata gap for an existing CATID. For CAT_E_NODESCRIPTION, keep those outcomes separate in exception mappings, telemetry dimensions, user messages, and automated retry policy.

Developer and administrator guidance

For CAT_E_NODESCRIPTION, store CATIDs as stable identifiers, keep localized descriptions independent from membership, and enumerate current records before updating them. Regression coverage for CAT_E_NODESCRIPTION should include unknown CATIDs, missing localized descriptions, repeated registration, class membership without a definition, different locales, and uninstall ordering.

Operational repair for CAT_E_NODESCRIPTION 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 CAT_E_NODESCRIPTION so the change can be attributed and reversed.

References


Looking for a different code? Search another status or error code.