What does HRESULT 0x000D36FD (MF_S_ACTIVATE_REPLACED) mean?

 
Previous Next
MF_S_MULTIPLE_BEGIN MF_S_SINK_NOT_FINALIZED

MF_S_ACTIVATE_REPLACED

Media Foundation activation object was replaced with an empty activation

MF_S_ACTIVATE_REPLACED is HRESULT 866045 (0x000D36FD) from Windows Media Foundation. AllStat describes it as “The activate could not be created in the remote process for some reason it was replaced with empty one.” In the Windows Media Player, Windows Media Format, DRM, or Media Foundation state machine, the value reports a nonfailure state that must not be collapsed into plain S_OK.

The MF_S_ACTIVATE_REPLACED status must be preserved until its code-specific output and next action have been processed.

Where the status is encountered

  • MF_S_ACTIVATE_REPLACED can appear during Windows Media Player library, playlist, store, or UI plug-in callbacks; capture the exact API, object, and phase because the same numeric success severity does not define the state by itself.
  • MF_S_ACTIVATE_REPLACED can appear during Windows Media Format source, writer, DRM, publishing-point, or installation operations; capture the exact API, object, and phase because the same numeric success severity does not define the state by itself.
  • MF_S_ACTIVATE_REPLACED can appear during Media Foundation topology activation and remote-component setup; capture the exact API, object, and phase because the same numeric success severity does not define the state by itself.

Keep MF_S_ACTIVATE_REPLACED attached to the operation that returned it. Interpreting MF_S_ACTIVATE_REPLACED outside that API contract can turn a normal continuation or partial result into an incorrect retry or false completion.

What must be true before accepting it

Verify that the caller detects the replacement and does not dereference it as the originally requested remote activation object. Validation of MF_S_ACTIVATE_REPLACED keeps a success-severity result from becoming a broader promise than the API made.

For MF_S_ACTIVATE_REPLACED, also confirm that returned outputs belong to the current operation generation and were not inherited from an earlier attempt.

Evidence and telemetry

  • Preserve requested activation CLSID for MF_S_ACTIVATE_REPLACED.
  • Preserve remote process and session for MF_S_ACTIVATE_REPLACED.
  • Preserve replacement object identity for MF_S_ACTIVATE_REPLACED.
  • Preserve topology node for MF_S_ACTIVATE_REPLACED.
  • Preserve fallback selected for MF_S_ACTIVATE_REPLACED.

For MF_S_ACTIVATE_REPLACED, also record UTC time, process and thread IDs, component version, operation generation, and a correlation ID. Keep sensitive MF_S_ACTIVATE_REPLACED content out of logs; use lengths, hashes, GUIDs, and policy-safe metadata where possible.

Diagnostic sequence

  • Capture raw 0x000D36FD and MF_S_ACTIVATE_REPLACED before exceptions, signed formatting, or a generic success wrapper removes the symbolic value.
  • Identify the interface, method, callback, service, driver, or broker that returned MF_S_ACTIVATE_REPLACED, including component version, process, thread, and correlation ID.
  • Prove the decisive condition for MF_S_ACTIVATE_REPLACED: the caller detects the replacement and does not dereference it as the originally requested remote activation object.
  • For MF_S_ACTIVATE_REPLACED, inspect every output, count, object handle, callback, queue entry, media item, report, transaction, topology element, or signaling response the call produced.
  • Compare state immediately before and after MF_S_ACTIVATE_REPLACED and verify that ownership, lifetime, persistence, and user-visible effects match the status.
  • Reproduce MF_S_ACTIVATE_REPLACED with the smallest input, then change only the suspected cause and confirm that the return value or postcondition changes as predicted.

Correct handling and recovery

Treat the returned placeholder as an unavailable activation, preserve the remote-process failure evidence, and choose a documented fallback or stop graph construction.

Do not use an unchanged tight retry loop for MF_S_ACTIVATE_REPLACED; it can duplicate effects or conceal a terminal state.

Difference from nearby results

This is informational replacement, not successful creation of the requested remote component.

For MF_S_ACTIVATE_REPLACED, the neighboring result changes whether output is final, more work remains, or fallback is required.

Practical scenario

A topology loader cannot instantiate a remote media sink and receives an empty activation placeholder. It removes that optional branch and reports degraded output.

A regression test should reproduce MF_S_ACTIVATE_REPLACED, assert all relevant outputs and state, then change only the decisive condition and verify ordinary completion or the expected neighboring result.

Developer and administrator guidance

Branch on MF_S_ACTIVATE_REPLACED before the ordinary SUCCEEDED(hr) path whenever output validity or the next method differs. Keep 0x000D36FD, the MF_S_ACTIVATE_REPLACED method, component build, and correlation ID in telemetry.

For MF_S_ACTIVATE_REPLACED, preserve first-occurrence context before restarting services, clearing stores, or rebuilding configuration. Document who owns continuation, cancellation, cleanup, fallback, and user messaging for MF_S_ACTIVATE_REPLACED.

References


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