What does HRESULT 0x00263008 (DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI) mean?

 
Previous Next
DWM_S_GDI_REDIRECTION_SURFACE NAP_S_CERT_ALREADY_PRESENT

DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI

DWM redirection surface must be copied through GDI

DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI is HRESULT 2502664 (0x00263008) from winerror.h. AllStat describes it as “{GDI redirection surface is either on a different adapter or in system memory; Perform blt via GDI} GDI redirection surface is either on a different adapter or in system memory; Perform blt via GDI.” In the Windows display topology or Desktop Window Manager operation, the value reports a nonfailure state that must not be collapsed into plain S_OK.

For DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI, a cleared severity bit does not make the return equivalent to ordinary completion; the postcondition remains specific.

What must be true before accepting it

Verify that the surface is on another adapter or in system memory and the caller selects a compatible GDI blit path. For DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI, that proof prevents usable partial state from being confused with full completion.

For DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI, also confirm that returned outputs belong to the current operation generation and were not inherited from an earlier attempt.

Where the status is encountered

  • DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI can appear during VidPN mode-set, topology, and path negotiation; capture the exact API, object, and phase because the same numeric success severity does not define the state by itself.
  • DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI can appear during display miniport and graphics-kernel dataset enumeration; capture the exact API, object, and phase because the same numeric success severity does not define the state by itself.
  • DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI can appear during DWM composition and GDI redirection-surface handling; capture the exact API, object, and phase because the same numeric success severity does not define the state by itself.

Keep DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI attached to the operation that returned it. Interpreting DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI outside that API contract can turn a normal continuation or partial result into an incorrect retry or false completion.

Diagnostic sequence

  • Capture raw 0x00263008 and DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI before exceptions, signed formatting, or a generic success wrapper removes the symbolic value.
  • Identify the interface, method, callback, service, driver, or broker that returned DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI, including component version, process, thread, and correlation ID.
  • Prove the decisive condition for DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI: the surface is on another adapter or in system memory and the caller selects a compatible GDI blit path.
  • For DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI, inspect every output, count, object handle, callback, queue entry, media item, report, transaction, topology element, or signaling response the call produced.
  • Compare state immediately before and after DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI and verify that ownership, lifetime, persistence, and user-visible effects match the status.
  • Reproduce DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI with the smallest input, then change only the suspected cause and confirm that the return value or postcondition changes as predicted.

Evidence and telemetry

  • Preserve window and surface IDs for DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI.
  • Preserve source and destination adapters for DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI.
  • Preserve memory placement for DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI.
  • Preserve GDI blit parameters for DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI.
  • Preserve copy timing and result for DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI.

For DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI, also record UTC time, process and thread IDs, component version, operation generation, and a correlation ID. Keep sensitive DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI content out of logs; use lengths, hashes, GUIDs, and policy-safe metadata where possible.

Correct handling and recovery

Perform the copy through GDI, preserve clipping and color semantics, and measure the fallback cost. Re-evaluate when adapter or window placement changes.

Retry after DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI only when a recorded input, capability, resource, policy, or state has changed.

Practical scenario

A window moves between adapters and its capture surface becomes system-memory backed. The capture tool switches to GDI blit and avoids a failing GPU copy.

A regression test should reproduce DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI, assert all relevant outputs and state, then change only the decisive condition and verify ordinary completion or the expected neighboring result.

Difference from nearby results

DWM_S_GDI_REDIRECTION_SURFACE returns the surface without requiring this specific cross-adapter or system-memory fallback.

Using one generic success branch for DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI and its neighbor can lose output, repeat work, or misreport completion.

Developer and administrator guidance

When DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI crosses COM, RPC, managed, scripting, driver, or service boundaries, preserve the unsigned 32-bit value. Unit tests for DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI should assert the code-specific postcondition, not only success severity.

For DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI, the smallest targeted state change best verifies that the diagnosed condition was causal. Document who owns continuation, cancellation, cleanup, fallback, and user messaging for DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI.

References


Looking for a different code? Search another status or error code.