What does HRESULT 0x8001013D (CO_E_DECODEFAILED) mean?

 
Previous Next
CO_E_FAILEDTOOPENPROCESSTOKEN CO_E_ACNOTINITIALIZED

CO_E_DECODEFAILED

COM could not decode serialized ACL data

CO_E_DECODEFAILED is HRESULT 2147549501 (0x8001013D) from winerror.h. The documented description is “Unable to decode the ACL in the stream provided by the user.” The relevant context is the COM IAccessControl, DCOM client identity, trustee translation, token inspection, security descriptor, ACL, or serialization workflow.

Where it is encountered

  • IAccessControl initialization, access checks, owner/trustee processing, and serialized ACL persistence.
  • Server-side DCOM impersonation, client blanket inspection, token and SID lookup.
  • Security descriptor construction, DACL canonicalization, file-backed policy storage, or legacy NetAccess migration.

The immediate focus is IAccessControl deserialization where stream content is truncated, corrupt, inconsistent, or invalid for the advertised format.

What to verify

Verify that the original stream is preserved with hash, length, version, and producer identity before any repair attempt. Validate this condition using the owning API state, not an inferred UI symptom.

Correct handling and recovery

Reject the decoded policy, retain the last known-good ACL, restore from trusted configuration, and fix the writer or storage corruption.

Reconcile partial output and server-side effects before attempting the operation again.

Practical scenario

A partial disk write truncates an ACL stream. Startup keeps the previous valid policy, quarantines the corrupt file, and rebuilds it from authoritative configuration.

Difference from nearby HRESULTs

It is invalid content; CO_E_INCOMPATIBLESTREAMVERSION is a clean format-version mismatch.

Developer and administrator guidance

References


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