Site icon EfmSoft

What does HRESULT 0x88990004 (D2DERR_SCANNER_FAILED) mean?

 
Previous Next
D2DERR_UNSUPPORTED_OPERATION D2DERR_SCREEN_ACCESS_DENIED

D2DERR_SCANNER_FAILED

The scope of D2DERR_SCANNER_FAILED is Direct2D geometry and numeric validation. The geometry scanner could not process the supplied geometry data. Keep 0x88990004 beside the returning method because a wrapper can replace this distinction with a generic subsystem message.

Keep neighboring failures separate

D2DERR_BAD_NUMBER identifies invalid numeric input broadly; SCANNER_FAILED is tied to geometry processing. For D2DERR_SCANNER_FAILED, 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 the status establishes

When D2DERR_SCANNER_FAILED is returned, Direct2D geometry processing depends on finite coordinates, valid matrices, closed geometry sinks, fill rules, and tolerances. A scanner failure identifies geometry processing, while a bad-number result can be raised by many APIs before rasterization in the D2DERR_SCANNER_FAILED path. For D2DERR_SCANNER_FAILED, preserve the path segments and numeric inputs at the first method that rejects them.

For D2DERR_SCANNER_FAILED, inspect the following boundary: path geometry, tessellation, winding, numeric range, or sink construction before rasterization.

Build a useful incident record

RecordWhy it matters here
Geometry type and serialized segmentsFor D2DERR_SCANNER_FAILED, recording geometry type and serialized segments separates the Direct2D geometry and numeric validation boundary from a later wrapper symptom.
Fill mode, transforms, tolerance, and boundsIn D2DERR_SCANNER_FAILED diagnostics, recording fill mode, transforms, tolerance, and bounds ties the HRESULT to the Direct2D geometry and numeric validation boundary rather than to the final visible failure.
NaN, infinity, extreme coordinates, or degenerate segmentsComparing NaN, infinity, extreme coordinates, or degenerate segments shows whether D2DERR_SCANNER_FAILED follows input, object state, or environment.
The scanner-consuming API and deferred error pointPreserving the scanner-consuming API and deferred error point provides the evidence needed to test this distinction: d2DERR_BAD_NUMBER identifies invalid numeric input broadly; SCANNER_FAILED is tied to geometry processing.

Interpret the controls

TestInterpretationHold constant
Same environment, reduced inputIf D2DERR_SCANNER_FAILED disappears with a smaller faithful case, complexity within Direct2D geometry and numeric validation is implicated.For D2DERR_SCANNER_FAILED, keep geometry type and serialized segments fixed while simplifying NaN, infinity, extreme coordinates, or degenerate segments.
Same input, fresh object generationIf D2DERR_SCANNER_FAILED 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_SCANNER_FAILED, place fill mode, transforms, tolerance, and bounds on the timeline of the last successful transition.
Same operation on a controlled second pathIf D2DERR_SCANNER_FAILED follows one environment, the failure is not explained by source data alone.For D2DERR_SCANNER_FAILED, compare adapter and feature level, factory and device generations, target identity, debug-layer output, and thread ownership while preserving the scanner-consuming API and deferred error point.

Reduce the scenario safely

For D2DERR_SCANNER_FAILED, build the geometry segment by segment with identity transform and moderate coordinates. When D2DERR_SCANNER_FAILED is returned, check every sink close result, then add the original transform, tolerance, and extreme values independently.

  1. When D2DERR_SCANNER_FAILED is returned, rebuild the path segment by segment.
  2. Test without transforms and with moderate coordinates in the D2DERR_SCANNER_FAILED path.
  3. For D2DERR_SCANNER_FAILED, close every geometry sink successfully.
  4. When D2DERR_SCANNER_FAILED is returned, compare fill and stroke operations.

Prove the correction

A correction for D2DERR_SCANNER_FAILED should let the operation at the Direct2D geometry and numeric validation boundary complete repeatedly under the original supported conditions. Repeat the control that begins with “Rebuild the path segment by segment” and confirm that the following lifecycle step also succeeds. For D2DERR_SCANNER_FAILED, keep the original failing sample and one deliberate negative case so fallback cannot be mistaken for repair.

Technical references

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

Exit mobile version