What does HRESULT 0x8899002A (D2DERR_NO_SUBPROPERTIES) mean?

 
Previous Next
D2DERR_INVALID_PROPERTY D2DERR_PRINT_JOB_CLOSED

D2DERR_NO_SUBPROPERTIES

The scope of D2DERR_NO_SUBPROPERTIES is Direct2D effect registration and property metadata. The caller requested a nested Direct2D property where no such subproperty exists. Keep 0x8899002A beside the returning method because a wrapper can replace this distinction with a generic subsystem message.

Start with the returning API

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

For D2DERR_NO_SUBPROPERTIES, inspect the following boundary: property path traversal after a valid parent property.

Limits of this code

INVALID_PROPERTY rejects the main property; NO_SUBPROPERTIES is narrower and applies after reaching a parent that has no requested child. For D2DERR_NO_SUBPROPERTIES, 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.

Diagnostic evidence matrix

RecordWhy it matters here
Full property path and parent indexIn D2DERR_NO_SUBPROPERTIES diagnostics, recording full property path and parent index ties the HRESULT to the Direct2D effect registration and property metadata boundary rather than to the final visible failure.
Parent property type and metadataComparing parent property type and metadata shows whether D2DERR_NO_SUBPROPERTIES follows input, object state, or environment.
Effect CLSID and registration XMLPreserving effect CLSID and registration XML provides the evidence needed to test this distinction: iNVALID_PROPERTY rejects the main property; NO_SUBPROPERTIES is narrower and applies after reaching a parent that has no requested child.
Lookup method and returned indexFor D2DERR_NO_SUBPROPERTIES, recording lookup method and returned index separates the Direct2D effect registration and property metadata boundary from a later wrapper symptom.

Reproduce without destructive cleanup

For D2DERR_NO_SUBPROPERTIES, 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. When D2DERR_NO_SUBPROPERTIES is returned, resolve the parent property first.
  2. Enumerate its subproperties before lookup in the D2DERR_NO_SUBPROPERTIES path.
  3. For D2DERR_NO_SUBPROPERTIES, use the direct property if it is scalar.
  4. When D2DERR_NO_SUBPROPERTIES is returned, test custom registration metadata for nested fields.

Useful comparison axes

TestInterpretationHold constant
Same environment, reduced inputIf D2DERR_NO_SUBPROPERTIES disappears with a smaller faithful case, complexity within Direct2D effect registration and property metadata is implicated.For D2DERR_NO_SUBPROPERTIES, keep full property path and parent index fixed while simplifying effect CLSID and registration XML.
Same input, fresh object generationIf D2DERR_NO_SUBPROPERTIES 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_NO_SUBPROPERTIES, place parent property type and metadata on the timeline of the last successful transition.
Same operation on a controlled second pathIf D2DERR_NO_SUBPROPERTIES follows one environment, the failure is not explained by source data alone.For D2DERR_NO_SUBPROPERTIES, compare adapter and feature level, factory and device generations, target identity, debug-layer output, and thread ownership while preserving lookup method and returned index.

What success must demonstrate

A correction for D2DERR_NO_SUBPROPERTIES 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 “Resolve the parent property first” and confirm that the following lifecycle step also succeeds. For D2DERR_NO_SUBPROPERTIES, keep the original failing sample and one deliberate negative case so fallback cannot be mistaken for repair.

Technical references

When D2DERR_NO_SUBPROPERTIES 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.