| Previous | Next |
| D2DERR_INTERMEDIATE_TOO_LARGE | D2DERR_INVALID_PROPERTY |
D2DERR_EFFECT_IS_NOT_REGISTERED
D2DERR_EFFECT_IS_NOT_REGISTERED identifies a failure in Direct2D effect registration and property metadata. The CLSID supplied for effect unregistration does not identify a currently registered Direct2D effect. Investigation of D2DERR_EFFECT_IS_NOT_REGISTERED should preserve the original object generation before cleanup, retry, or fallback creates a secondary result.
Capture before changing state
| Record | Why it matters here |
|---|---|
| Effect CLSID in canonical form | Comparing effect CLSID in canonical form shows whether D2DERR_EFFECT_IS_NOT_REGISTERED follows input, object state, or environment. |
| Factory used for RegisterEffect and UnregisterEffect | Preserving factory used for RegisterEffect and UnregisterEffect provides the evidence needed to test this distinction: this code is specifically documented for Unregister; effect creation failures can have different causes even when registration is involved. |
| Registration XML and bindings | For D2DERR_EFFECT_IS_NOT_REGISTERED, recording registration XML and bindings separates the Direct2D effect registration and property metadata boundary from a later wrapper symptom. |
| Module load/unload and duplicate registration sequence | In D2DERR_EFFECT_IS_NOT_REGISTERED diagnostics, recording module load/unload and duplicate registration sequence ties the HRESULT to the Direct2D effect registration and property metadata boundary rather than to the final visible failure. |
Read the HRESULT in context
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_EFFECT_IS_NOT_REGISTERED path. For D2DERR_EFFECT_IS_NOT_REGISTERED, an unregistered CLSID, absent property, and absent child property occur at different lookup stages and should not share one generic fallback.
For D2DERR_EFFECT_IS_NOT_REGISTERED, inspect the following boundary: effect registration scope, factory identity, CLSID, and registration lifetime.
A minimal test sequence
When D2DERR_EFFECT_IS_NOT_REGISTERED 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.
- Enumerate or track successful registration in the D2DERR_EFFECT_IS_NOT_REGISTERED path.
- For D2DERR_EFFECT_IS_NOT_REGISTERED, use the same factory lifetime for the paired operation.
- When D2DERR_EFFECT_IS_NOT_REGISTERED is returned, verify the CLSID exactly.
- Make cleanup idempotent without hiding mismatched identifiers in the D2DERR_EFFECT_IS_NOT_REGISTERED path.
Common wrong turns
This code is specifically documented for Unregister; effect creation failures can have different causes even when registration is involved. For D2DERR_EFFECT_IS_NOT_REGISTERED, 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.
Three diagnostic branches
| Test | Interpretation | Hold constant |
|---|---|---|
| Same environment, reduced input | If D2DERR_EFFECT_IS_NOT_REGISTERED disappears with a smaller faithful case, complexity within Direct2D effect registration and property metadata is implicated. | For D2DERR_EFFECT_IS_NOT_REGISTERED, keep effect CLSID in canonical form fixed while simplifying registration XML and bindings. |
| Same input, fresh object generation | If D2DERR_EFFECT_IS_NOT_REGISTERED 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_EFFECT_IS_NOT_REGISTERED, place factory used for RegisterEffect and UnregisterEffect on the timeline of the last successful transition. |
| Same operation on a controlled second path | If D2DERR_EFFECT_IS_NOT_REGISTERED follows one environment, the failure is not explained by source data alone. | For D2DERR_EFFECT_IS_NOT_REGISTERED, compare adapter and feature level, factory and device generations, target identity, debug-layer output, and thread ownership while preserving module load/unload and duplicate registration sequence. |
Regression verification
A correction for D2DERR_EFFECT_IS_NOT_REGISTERED 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 or track successful registration” and confirm that the following lifecycle step also succeeds. For D2DERR_EFFECT_IS_NOT_REGISTERED, keep the original failing sample and one deliberate negative case so fallback cannot be mistaken for repair.
Technical references
When D2DERR_EFFECT_IS_NOT_REGISTERED is returned, these references define the public API family, object model, or error list used to interpret this status.
- Microsoft: Direct2D error codes.
- Microsoft: Direct2D custom effects.
- Microsoft: Direct2D effect properties.
- Microsoft: Direct2D API overview.
Looking for a different code? Search another status or error code.