| Previous | Next |
| D2DERR_MAX_TEXTURE_SIZE_EXCEEDED | D2DERR_BAD_NUMBER |
D2DERR_UNSUPPORTED_VERSION
D2DERR_UNSUPPORTED_VERSION belongs to Direct2D runtime, version, or lower-system failure. The application requested a Direct2D version or interface level unavailable on the current runtime or device path. The diagnostic goal for D2DERR_UNSUPPORTED_VERSION is to identify the first rejecting object and transition, not merely the final high-level symptom.
What the status establishes
For D2DERR_UNSUPPORTED_VERSION, internal, unsupported-version, and mapped Win32 errors sit at different layers. When D2DERR_UNSUPPORTED_VERSION is returned, one can require rebuilding a Direct2D instance, another means the requested interface contract is unavailable, and the third demands recovery of a lower system status. The exact factory, device, method, and nested result determine which response is valid in the D2DERR_UNSUPPORTED_VERSION path.
For D2DERR_UNSUPPORTED_VERSION, inspect the following boundary: factory or interface creation and the version-specific feature being requested.
Build a useful incident record
| Record | Why it matters here |
|---|---|
| OS build and Direct2D DLL version | For D2DERR_UNSUPPORTED_VERSION, recording OS build and Direct2D DLL version separates the Direct2D runtime, version, or lower-system failure boundary from a later wrapper symptom. |
| Requested interface IID or feature version | In D2DERR_UNSUPPORTED_VERSION diagnostics, recording requested interface IID or feature version ties the HRESULT to the Direct2D runtime, version, or lower-system failure boundary rather than to the final visible failure. |
| Device feature level and creation flags | Comparing device feature level and creation flags shows whether D2DERR_UNSUPPORTED_VERSION follows input, object state, or environment. |
| Fallback interface result | Preserving fallback interface result provides the evidence needed to test this distinction: iNSUFFICIENT_DEVICE_CAPABILITIES concerns GPU capability after the API exists; UNSUPPORTED_VERSION concerns the requested Direct2D contract. |
Reduce the scenario safely
Use a fresh factory and minimal operation, record runtime and interface versions, enable the debug layer, and capture device-removal or Win32 evidence immediately in the D2DERR_UNSUPPORTED_VERSION path. For D2DERR_UNSUPPORTED_VERSION, do not apply render-target recreation to errors that are not documented as target loss.
- For D2DERR_UNSUPPORTED_VERSION, queryInterface progressively for the needed version.
- When D2DERR_UNSUPPORTED_VERSION is returned, use capability checks before version-specific calls.
- Test the baseline Direct2D interface in the D2DERR_UNSUPPORTED_VERSION path.
- For D2DERR_UNSUPPORTED_VERSION, avoid shipping private system Direct2D binaries.
Interpret the controls
| Test | Interpretation | Hold constant |
|---|---|---|
| Same environment, reduced input | If D2DERR_UNSUPPORTED_VERSION disappears with a smaller faithful case, complexity within Direct2D runtime, version, or lower-system failure is implicated. | For D2DERR_UNSUPPORTED_VERSION, keep OS build and Direct2D DLL version fixed while simplifying device feature level and creation flags. |
| Same input, fresh object generation | If D2DERR_UNSUPPORTED_VERSION 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_UNSUPPORTED_VERSION, place requested interface IID or feature version on the timeline of the last successful transition. |
| Same operation on a controlled second path | If D2DERR_UNSUPPORTED_VERSION follows one environment, the failure is not explained by source data alone. | For D2DERR_UNSUPPORTED_VERSION, compare adapter and feature level, factory and device generations, target identity, debug-layer output, and thread ownership while preserving fallback interface result. |
Keep neighboring failures separate
INSUFFICIENT_DEVICE_CAPABILITIES concerns GPU capability after the API exists; UNSUPPORTED_VERSION concerns the requested Direct2D contract. For D2DERR_UNSUPPORTED_VERSION, 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.
Prove the correction
A correction for D2DERR_UNSUPPORTED_VERSION should let the operation at the Direct2D runtime, version, or lower-system failure boundary complete repeatedly under the original supported conditions. Repeat the control that begins with “QueryInterface progressively for the needed version” and confirm that the following lifecycle step also succeeds. For D2DERR_UNSUPPORTED_VERSION, keep the original failing sample and one deliberate negative case so fallback cannot be mistaken for repair.
Technical references
When D2DERR_UNSUPPORTED_VERSION 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 API overview.
- Microsoft: Direct2D devices and device contexts.
- Microsoft Open Specifications: HRESULT values.
Looking for a different code? Search another status or error code.