| Previous | Next |
| MF_E_INVALID_KEY | MF_E_UNSUPPORTED_CAPTION |
MF_E_BAD_STARTUP_VERSION
What the code tells you
MF_E_BAD_STARTUP_VERSION (0xC00D36E3) is a failure result from Windows Media Foundation. The generated section above already contains the platform message; the useful extra information is that this result isolates MFStartup received a version value that does not match the Media Foundation runtime contract available on the machine.
The producer is the platform initialization call before any session or source is created, so diagnosis should begin with that object and its state rather than with a broad reinstall or an unrelated codec change. A representative occurrence is a binary built with mismatched declarations or a copied version literal calls a runtime that expects another MF_VERSION.
Checkpoint map
| Checkpoint | Question to answer |
|---|---|
| Input | What exact name, type, index, URL, position, media item, account, device, or setup package reached the platform initialization call before any session or source is created? |
| State | Was the object initialized, connected, started, stopped, committed, authorized, or ready when it evaluated MFStartup received a version value that does not match the Media Foundation runtime contract available on the machine? |
| Evidence | the exact MF_VERSION value, process bitness, loaded mfplat.dll path and version, headers used at build time, and call flags. |
| Completion | Which event, callback, output sample, provider result, or installer action should have followed MF_E_BAD_STARTUP_VERSION? |
Build a useful incident record
Collect MF_E_BAD_STARTUP_VERSION data before automatic retries, Player navigation, device reconnection, source shutdown, or setup rollback destroys it. For MF_E_BAD_STARTUP_VERSION, the minimum useful record contains the exact returning API, object identity, input identity, current lifecycle state, and the first lower-level failure.
A MF_E_BAD_STARTUP_VERSION trace must not store credentials, license payloads, private keys, authorization headers, or unrelated library contents. For MF_E_BAD_STARTUP_VERSION, record identifiers, hashes, lengths, status values, and redacted endpoint information sufficient to correlate the event.
Reproduce without erasing context
- Reproduce once with tracing enabled and preserve
0xC00D36E3before any fallback. - Verify the decisive observation: the exact MF_VERSION value, process bitness, loaded mfplat.dll path and version, headers used at build time, and call flags.
- Run the controlled comparison: run a tiny process that calls MFStartup with the documented MF_VERSION from the same SDK and then immediately calls MFShutdown.
- Return to the
MF_E_BAD_STARTUP_VERSIONbaseline, apply the supported correction, and create a new object generation if the old one entered a terminal state. - Repeat the
MF_E_BAD_STARTUP_VERSIONtest until the original call advances past this checkpoint and the expected output is validated.
Comparison with adjacent conditions
| HRESULT | Boundary indicated by its standard description |
|---|---|
MF_E_UNSUPPORTED_CAPTION | The caption of the given URL is unsupported; compare this boundary specifically with MF_E_BAD_STARTUP_VERSION. |
MF_E_INVALID_POSITION | The operation on the current offset is not permitted; compare this boundary specifically with MF_E_BAD_STARTUP_VERSION. |
MF_E_UNRECOVERABLE_ERROR_OCCURRED | An unrecoverable error has occurred; compare this boundary specifically with MF_E_BAD_STARTUP_VERSION. |
The codes compared with MF_E_BAD_STARTUP_VERSION can lead to the same user-facing “cannot play,” “operation failed,” or “setup failed” dialog. They remain technically different. Here, MF_E_DISABLED_IN_SAFEMODE accepts the version but refuses platform startup because of the boot mode.
Resolution and proof
For this occurrence, compile and call MFStartup with the supported version constant; avoid hard-coded guessed numbers. For MF_E_BAD_STARTUP_VERSION, avoid generic cleanup until the original artifact is copied and the producing state is known. A destructive reset during MF_E_BAD_STARTUP_VERSION diagnosis can remove evidence while leaving the actual policy, device, network, format, or lifecycle error unchanged.
Verification of MF_E_BAD_STARTUP_VERSION must use the same input and action that failed. Confirm the expected state transition and check that the workflow does not merely substitute another error after MF_E_BAD_STARTUP_VERSION disappears.
Authoritative references
- Media Foundation architecture — reference used for the
MF_E_BAD_STARTUP_VERSIONcheckpoint. - Media Foundation error codes — reference used for the
MF_E_BAD_STARTUP_VERSIONcheckpoint. - MFStartup function — reference used for the
MF_E_BAD_STARTUP_VERSIONcheckpoint. - Media Foundation platform functions — reference used for the
MF_E_BAD_STARTUP_VERSIONcheckpoint.
Looking for a different code? Search another status or error code.