| Previous | Next |
| STG_E_DOCFILECORRUPT | STG_E_DOCFILETOOLARGE |
STG_E_BADBASEADDRESS
OLE32 loaded at an unexpected base address
STG_E_BADBASEADDRESS is HRESULT 2147680528 (0x80030110) from winerror.h. AllStat describes it as “OLE32.DLL has been loaded at the wrong address.” The result belongs to legacy structured-storage initialization that depends on a specific OLE32 image layout. A reliable this result diagnosis preserves the raw value and reconstructs the state that made this true: the runtime detected OLE32.DLL at an address incompatible with the expected 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.
Typical causes and interpretation boundary
Common cause branches include the following:
- Legacy binaries depend on obsolete fixed-address assumptions.
- The runtime image is mismatched or modified.
- Process injection or loader configuration changes module placement.
Confirm the cause branch that explains why the runtime detected OLE32.DLL at an address incompatible with the expected implementation by using call arguments, object state, metadata, device information, or provider traces.
Correct handling and recovery
The primary recovery is to repair the operating-system image and remove unsupported binary assumptions or injected components. The result failure report should expose enough legacy structured-storage initialization that depends on a specific OLE32 image layout state to understand why the runtime detected OLE32.DLL at an address incompatible with the expected implementation without a production debugger.
When it follows cancellation or replacement, create a new generation before applying the recovery: repair the operating-system image and remove unsupported binary assumptions or injected components. Reconcile persistent, remote, device, or ownership state before repeating it.
Practical scenario
A historic automation host ships with a private incompatible OLE component; system-file repair and removal of the private copy restore normal loading. Record the decisive state for this HRESULT and verify recovery on a fresh object or request generation.
Difference from related HRESULTs
CO_E_INIT_* results describe COM initialization stages; it is a legacy storage-family loader-layout failure Tests and telemetry should preserve that boundary for this HRESULT.
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.
A runbook should preserve the original artifact and logs before the proposed recovery—repair the operating-system image and remove unsupported binary assumptions or injected components—changes evidence. Repair for this HRESULT 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.
