| Previous | Next |
| DXGI_STATUS_CLIPPED | DXGI_STATUS_NO_DESKTOP_ACCESS |
DXGI_STATUS_NO_REDIRECTION
Locate the failing graphics boundary: status no redirection
DXGI_STATUS_NO_REDIRECTION, value 0x087A0004, is produced by dxgi status when the display driver requested a path that does not use the normal shared-resource redirection channel to Desktop Window Manager. The investigation should stay attached to DXGI-to-DWM transport choice and to the exact generation in which it was obtained.
This result: A DXGI status can describe a successful or temporarily invisible presentation. Converting every non-S_OK value into device recreation destroys useful state and can create a full-screen transition loop. The built-in one-line message identifies the immediate result; diagnosis also needs the producing API, object ownership and the display generation current at the time.
Evidence that makes the result actionable
| Capture item | Why it matters for it |
|---|---|
| Decisive capture | driver model, swap effect, composition state, output ownership, session type and the exact call returning the status |
| Current graph state | swap chain, target window, output and Present call |
| Supporting trace | Present/Present1 result history, WM_SIZE or WM_DISPLAYCHANGE messages, swap-chain description and current IDXGIOutput identity |
| Object identity | DXGI-to-DWM transport choice |
| Rejected boundary | the display driver requested a path that does not use the normal shared-resource redirection channel to Desktop Window Manager |
Preserve the unsigned HRESULT, symbolic name, first failing API and timestamp in one record. If cleanup later fails too, keep that secondary result separately from this result.
A controlled comparison
- Freeze the result generation. Record driver model, swap effect, composition state, output ownership, session type and the exact call returning the status. Before diagnosing this result, do not resize, hot-plug, recreate or release the object under examination.
- Run the narrow it comparison. repeat the same swap-chain operation with ordinary windowed composition and with the driver-specific path that triggers no redirection. During the result comparison, keep every driver, monitor, resource format and unrelated policy unchanged.
- Observe the layer after it. for it, if the exact check passes, record the next HRESULT or visible outcome. A different downstream result shows that the boundary was crossed.
- Repeat it through a lifecycle transition. for it, exercise one relevant resize, mode switch, device recreation, hot-plug or session change and confirm that it does not reuse stale handles.
The comparison with DXGI_ERROR_NON_COMPOSITED_UI is especially useful: DXGI_ERROR_NON_COMPOSITED_UI is a failure caused by compositor ownership, not a successful transport status. Recording both names prevents a broad “graphics error” label from merging distinct ownership, capability and lifetime problems.
Correction and proof
Preserve the driver-selected path and avoid assuming that every successful presentation is redirected through a shared surface. Repair of it is complete only when the original call succeeds or returns its documented nonfatal status and the same lifetime test remains correct after a second display transition.
- The result trace identifies one producing API and one current graphics object, rather than only the final UI symptom.
- The passing run changes exactly the condition described for it; unrelated adapter, monitor and application state remains unchanged.
- debug-layer, ETW or driver diagnostics no longer report the rejected DXGI-to-DWM transport choice contract during the same scenario.
- The application handles recurrence of it without an unbounded retry loop, leaked resource, duplicate composition target or stale topology handle.
Implementation notes
Log Present/Present1 result history, WM_SIZE or WM_DISPLAYCHANGE messages, swap-chain description and current IDXGIOutput identity. When the path returns a count, size, status flag or replacement object, retain it even on a nonfatal result because it can direct the next call.
A production fallback for it should be explicit: pause rendering, re-enumerate, rebuild one cache entry, recreate a device, or decline a protected path only when this layer calls for that action. Reinstalling every display component, deleting all caches or forcing a resolution change is not an evidence-based fix for it.
Technical references
- Microsoft: DXGI status codes — background for the DXGI-to-DWM transport choice boundary involved in it.
- Microsoft: DXGI overview and presentation
- Microsoft: DXGI_PRESENT flags
- Microsoft: DXGI best practices
Looking for a different code? Search another status or error code.