| 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. AllStat describes it as “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. The symbol this result is useful only 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.
The decisive meaning of this result is that the file is recognized as structured storage but its format version is too old for this implementation. The severity bit does not decide handling; the controlling fact is that the file is recognized as structured storage but its format version is too old for this implementation. A reliable it diagnosis preserves the raw value and reconstructs the state that made this true: the file is recognized as structured storage but its format version is too old for this implementation.
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 for it 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 boundary
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 result failure report should expose enough opening a compound document whose on-disk format predates the implementation contract state to understand why the file is recognized as structured storage but its format version is too old for this implementation without a production debugger.
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. Reconcile persistent, remote, device, or ownership state before repeating it.
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. Record the decisive state for it and verify recovery on a fresh object or request generation.
Difference from related HRESULTs
STG_E_OLDDLL is the inverse compatibility direction: the file requires a newer storage implementation Tests and telemetry should preserve that boundary for it.
Developer and administrator guidance
Developers handling it should make object lifetime and state transitions explicit, preserve the native HRESULT, and keep cleanup paths safe when initialization or output is partial. Exercise direct and transacted modes, read-only and writable paths, cancellation, malformed input, and cleanup after partial output.
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. Repair for it should target only the evidence-backed component, provider, document, device, or configuration.
References
- Microsoft: COM error codes for STG and RPC
- Microsoft: Structured Storage
- Microsoft: IStorage
- Microsoft: IStream
Looking for a different code? Search another status or error code.