What does HRESULT 0x88990029 (D2DERR_INVALID_PROPERTY) mean?

 
Previous Next
D2DERR_EFFECT_IS_NOT_REGISTERED D2DERR_NO_SUBPROPERTIES

D2DERR_INVALID_PROPERTY

D2DERR_INVALID_PROPERTY identifies a failure in Direct2D effect registration and property metadata. The requested Direct2D effect property does not exist. Investigation of D2DERR_INVALID_PROPERTY should preserve the original object generation before cleanup, retry, or fallback creates a secondary result.

Facts worth preserving

RecordWhy it matters here
Effect CLSID and registration versionComparing effect CLSID and registration version shows whether D2DERR_INVALID_PROPERTY follows input, object state, or environment.
Property index or pathPreserving property index or path provides the evidence needed to test this distinction: nO_SUBPROPERTIES means the parent property exists but the requested nested property does not; INVALID_PROPERTY means the property itself is absent.
Declared property list and typesFor D2DERR_INVALID_PROPERTY, recording declared property list and types separates the Direct2D effect registration and property metadata boundary from a later wrapper symptom.
GetValue/SetValue method and binding resultIn D2DERR_INVALID_PROPERTY diagnostics, recording GetValue/SetValue method and binding result ties the HRESULT to the Direct2D effect registration and property metadata boundary rather than to the final visible failure.

Subsystem boundary

Effect registration is scoped to a factory and CLSID, while effect properties form a metadata hierarchy of names, indices, types, and optional subproperties in the D2DERR_INVALID_PROPERTY path. For D2DERR_INVALID_PROPERTY, an unregistered CLSID, absent property, and absent child property occur at different lookup stages and should not share one generic fallback.

For D2DERR_INVALID_PROPERTY, inspect the following boundary: property lookup by index, name, and effect CLSID.

Isolation procedure

When D2DERR_INVALID_PROPERTY is returned, track successful registration on the same factory, enumerate properties from the exact effect instance, resolve the parent before a child, and use the canonical CLSID and property path in diagnostics.

  1. Enumerate properties from the effect in the D2DERR_INVALID_PROPERTY path.
  2. For D2DERR_INVALID_PROPERTY, use a known property by index and name.
  3. When D2DERR_INVALID_PROPERTY is returned, check custom-effect XML registration.
  4. Keep built-in effect version differences explicit in the D2DERR_INVALID_PROPERTY path.

Do not hide the original condition

NO_SUBPROPERTIES means the parent property exists but the requested nested property does not; INVALID_PROPERTY means the property itself is absent. For D2DERR_INVALID_PROPERTY, do not respond with a universal render-target recreation loop unless the returned status specifically documents device-loss recovery; graph, property, numeric, lifetime, and print-state errors require correcting their contract.

What each result would imply

TestInterpretationHold constant
Same environment, reduced inputIf D2DERR_INVALID_PROPERTY disappears with a smaller faithful case, complexity within Direct2D effect registration and property metadata is implicated.For D2DERR_INVALID_PROPERTY, keep effect CLSID and registration version fixed while simplifying declared property list and types.
Same input, fresh object generationIf D2DERR_INVALID_PROPERTY changes after rebuilding state, examine ownership across the caller’s object graph, custom effect or renderer, Direct2D validation layer, backing device, and deferred draw boundary.For D2DERR_INVALID_PROPERTY, place property index or path on the timeline of the last successful transition.
Same operation on a controlled second pathIf D2DERR_INVALID_PROPERTY follows one environment, the failure is not explained by source data alone.For D2DERR_INVALID_PROPERTY, compare adapter and feature level, factory and device generations, target identity, debug-layer output, and thread ownership while preserving GetValue/SetValue method and binding result.

Verification after repair

A correction for D2DERR_INVALID_PROPERTY should let the operation at the Direct2D effect registration and property metadata boundary complete repeatedly under the original supported conditions. Repeat the control that begins with “Enumerate properties from the effect” and confirm that the following lifecycle step also succeeds. For D2DERR_INVALID_PROPERTY, keep the original failing sample and one deliberate negative case so fallback cannot be mistaken for repair.

Technical references

When D2DERR_INVALID_PROPERTY is returned, these references define the public API family, object model, or error list used to interpret this status.


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