What does HRESULT 0xC00D36E3 (MF_E_BAD_STARTUP_VERSION) mean?

 
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

CheckpointQuestion to answer
InputWhat 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?
StateWas 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?
Evidencethe exact MF_VERSION value, process bitness, loaded mfplat.dll path and version, headers used at build time, and call flags.
CompletionWhich 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

  1. Reproduce once with tracing enabled and preserve 0xC00D36E3 before any fallback.
  2. 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.
  3. 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.
  4. Return to the MF_E_BAD_STARTUP_VERSION baseline, apply the supported correction, and create a new object generation if the old one entered a terminal state.
  5. Repeat the MF_E_BAD_STARTUP_VERSION test until the original call advances past this checkpoint and the expected output is validated.

Comparison with adjacent conditions

HRESULTBoundary indicated by its standard description
MF_E_UNSUPPORTED_CAPTIONThe caption of the given URL is unsupported; compare this boundary specifically with MF_E_BAD_STARTUP_VERSION.
MF_E_INVALID_POSITIONThe operation on the current offset is not permitted; compare this boundary specifically with MF_E_BAD_STARTUP_VERSION.
MF_E_UNRECOVERABLE_ERROR_OCCURREDAn 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


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