What does HRESULT 0x80030104 (STG_E_OLDFORMAT) mean?

 
Previous Next
STG_E_CANTSAVE STG_E_OLDDLL

STG_E_OLDFORMAT

Compound file uses an incompatible older storage format

STG_E_OLDFORMAT is HRESULT 2147680516 (0x80030104) from winerror.h. The documented description is “The compound file %1 was produced with an incompatible version of storage.” The result belongs to opening a compound document whose on-disk format predates the implementation contract. This HRESULT is most useful when tied to the method and lifecycle phase where the file is recognized as structured storage but its format version is too old for this implementation.

This result means that the file is recognized as structured storage but its format version is too old for this implementation. Preserve the original HRESULT and the state that made this condition true; the severity bit alone does not determine how the caller should handle it.

Where the result appears

  • This result can surface in a IStorage, IStream, ILockBytes, property storage, compound-file parsing, or persistence code.
  • Map the failure to one concrete operation among StgOpenStorage, StgCreateStorageEx, IStorage, IStream, IPropertyStorage, STATSTG, and the selected STGM mode.
  • Preserve storage path or identity, STGM mode, stream or storage name, transaction generation, file hash, and backing provider before releasing or replacing the object that returned this result.

An incident record must distinguish caller, runtime, provider, and backing resource while testing whether the file is recognized as structured storage but its format version is too old for this implementation.

Typical causes and interpretation

The immediate contract boundary is specific: the file is recognized as structured storage but its format version is too old for this implementation. Common cause branches include the following:

  • The document was produced by an obsolete application version.
  • A conversion step was skipped.
  • The file header claims a legacy sector or directory layout.

Confirm the cause branch that explains why the file is recognized as structured storage but its format version is too old for this implementation by using call arguments, object state, metadata, device information, or provider traces.

Correct handling and recovery

The primary recovery is to open it with the matching legacy converter or make a verified converted copy while preserving the original. The failure report should capture the relevant state during opening a compound document whose on-disk format predates the implementation contract so it is clear why the file is recognized as structured storage but its format version is too old for this implementation.

The owner of it must define idempotency, cancellation, attempt limits, and reconciliation for the failed opening a compound document whose on-disk format predates the implementation contract.

Practical scenario

An archival document opens in its original application but not in the current service; an isolated converter upgrades a copy and records the source hash.

Difference from related HRESULTs

STG_E_OLDDLL is the inverse compatibility direction: the file requires a newer storage implementation.

Developer and administrator guidance

Broad permission or compatibility changes are inappropriate unless evidence for the file is recognized as structured storage but its format version is too old for this implementation points to that layer.

References


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