What does HRESULT 0x00040170 (CACHE_S_FORMATETC_NOTSUPPORTED) mean?

 
Previous Next
VIEW_S_ALREADY_FROZEN CACHE_S_SAMECACHE

CACHE_S_FORMATETC_NOTSUPPORTED

OLE cache skipped an unsupported presentation format

CACHE_S_FORMATETC_NOTSUPPORTED is HRESULT 262512 (0x00040170) from winerror.h. AllStat describes CACHE_S_FORMATETC_NOTSUPPORTED as “FORMATETC not supported.” The high-order severity bit is clear, so this is a success result, but it carries more information than plain S_OK.

The cache operation completed with information that the requested FORMATETC is not supported for caching.

State boundary that must be proved

The central question for CACHE_S_FORMATETC_NOTSUPPORTED is whether other requested cache entries and the object itself may remain usable even though this particular format was not accepted. For CACHE_S_FORMATETC_NOTSUPPORTED, the HRESULT alone confirms neither unrelated work nor the quality of optional outputs.

A reliable interpretation of CACHE_S_FORMATETC_NOTSUPPORTED names the exact method contract, the object generation, and the outputs that remain valid. For CACHE_S_FORMATETC_NOTSUPPORTED, this prevents a success-with-information result from being promoted to full success or demoted to a generic error.

Where this result is encountered

  • CACHE_S_FORMATETC_NOTSUPPORTED can appear in IOleCache::Cache requests; record the producing interface and method rather than inferring behavior from the symbolic name alone.
  • CACHE_S_FORMATETC_NOTSUPPORTED can appear in embedded-object presentation caching; record the producing interface and method rather than inferring behavior from the symbolic name alone.
  • CACHE_S_FORMATETC_NOTSUPPORTED can appear in containers preparing offline display data for several aspects or media types; record the producing interface and method rather than inferring behavior from the symbolic name alone.

For CACHE_S_FORMATETC_NOTSUPPORTED, the same numeric success value can be mishandled when a wrapper exposes only a Boolean. For CACHE_S_FORMATETC_NOTSUPPORTED, keep the original HRESULT until the code-specific outputs and state transition have been evaluated.

Evidence and telemetry to preserve

  • For CACHE_S_FORMATETC_NOTSUPPORTED, preserve the rejected FORMATETC fields.
  • For CACHE_S_FORMATETC_NOTSUPPORTED, preserve supported formats enumerated by the data object.
  • For CACHE_S_FORMATETC_NOTSUPPORTED, preserve cache connection identifier output.
  • For CACHE_S_FORMATETC_NOTSUPPORTED, preserve ADVF flags and update policy.
  • For CACHE_S_FORMATETC_NOTSUPPORTED, preserve whether a fallback presentation was cached.

Also record cache_s_formatetc_notsupported_operation, cache_s_formatetc_notsupported_object, cache_s_formatetc_notsupported_state_before, cache_s_formatetc_notsupported_state_after, UTC time, process and thread identifiers, and a correlation ID. For CACHE_S_FORMATETC_NOTSUPPORTED, keep secrets out of logs while retaining GUIDs, CLSIDs, media subtypes, property IDs, row identities, and hashes needed to distinguish objects.

Diagnostic sequence

  • For CACHE_S_FORMATETC_NOTSUPPORTED, capture the raw HRESULT 0x00040170 immediately after the returning method and record whether the caller used SUCCEEDED, FAILED, equality testing, or exception translation.
  • Identify the exact owner of CACHE_S_FORMATETC_NOTSUPPORTED: interface, method, object instance, provider or filter version, thread or apartment, and operation phase.
  • Validate the decisive contract boundary for CACHE_S_FORMATETC_NOTSUPPORTED: other requested cache entries and the object itself may remain usable even though this particular format was not accepted.
  • For CACHE_S_FORMATETC_NOTSUPPORTED, inspect every output parameter, count, status array, returned interface, or side effect that the method documentation associates with this success-with-information result.
  • Compare the observed state before and after CACHE_S_FORMATETC_NOTSUPPORTED; do not assume that a success severity bit means every optional sub-operation completed.
  • For CACHE_S_FORMATETC_NOTSUPPORTED, reproduce the smallest request with the same object state and then change only the condition identified by the evidence before repeating the operation.

Correct handling, retry, and recovery

Choose a supported presentation format or continue without that cache entry when live rendering is acceptable. Do not assume the source data format itself is invalid.

Retry CACHE_S_FORMATETC_NOTSUPPORTED only when the recorded state can change the documented outcome. For CACHE_S_FORMATETC_NOTSUPPORTED, repeating the same call is inappropriate for a stable end marker, cancellation, unsupported format, adjusted property, or partial result whose completed side effects have not been reconciled.

Practical validation scenario

A container asks an object to cache a custom device-dependent format for offline thumbnails. The object declines that FORMATETC but accepts a metafile fallback, which the container verifies after closing the server.

The negative test should preserve the condition that produces CACHE_S_FORMATETC_NOTSUPPORTED; the recovery test should alter only that condition and verify the final state as well as the HRESULT.

Difference from nearby HRESULT values

DATA_S_SAMEFORMATETC reports equivalence; CACHE_S_FORMATETC_NOTSUPPORTED reports that the requested cache representation cannot be created.

For CACHE_S_FORMATETC_NOTSUPPORTED, this distinction determines whether the caller should consume partial outputs, stop iteration, wait, reconfigure, notify the user, or perform no error recovery at all.

Developer and administrator guidance

When CACHE_S_FORMATETC_NOTSUPPORTED crosses process, RPC, scripting, or managed-code boundaries, preserve the unsigned 32-bit value and symbolic name. For CACHE_S_FORMATETC_NOTSUPPORTED, a signed decimal rendering can obscure that the severity bit indicates success and can lead to incorrect exception or retry behavior.

A support report for CACHE_S_FORMATETC_NOTSUPPORTED should include decimal 262512, hexadecimal 0x00040170, the AllStat meaning, the owning API, and the first detailed status or output that explains why the method did not return ordinary S_OK.

References


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