What does HRESULT 0x80263005 (DWM_E_ADAPTER_NOT_FOUND) mean?

 
Previous Next
DWM_E_NOT_QUEUING_PRESENTS DWM_E_TEXTURE_TOO_LARGE

DWM_E_ADAPTER_NOT_FOUND

DWM cannot find the adapter identified by the LUID

DWM_E_ADAPTER_NOT_FOUND is HRESULT 0x80263005 (signed decimal -2144980987, unsigned decimal 2149986309). AllStat and winerror.h describe a Desktop Window Manager operation whose supplied adapter locally unique identifier does not identify an adapter known to DWM.

An adapter LUID is meaningful only in the system and adapter-generation context in which it was obtained. The code therefore commonly points to stale identity, cross-session or cross-process transport mistakes, adapter removal, driver reset, hybrid-GPU transition, or an attempt to use an identifier from a different boot. It does not mean that Windows has no display adapter at all.

Relevant API context

Microsoft's documentation for DwmDxGetWindowSharedSurface explicitly lists DWM_E_ADAPTER_NOT_FOUND when the luidAdapter value is invalid. That API is intended for a graphics driver or runtime, is documented only for Windows 7, and is not a normal application API. For any other call site, preserve the exact function because the public description does not prove a broader owner.

Causes to separate

  • The LUID was cached across reboot, display-driver upgrade, device reset, disable/enable, docking, hot removal, or graphics-device recreation.
  • A hybrid-graphics application selected one adapter but the target window or compositor surface belongs to another.
  • The identifier was serialized with the high and low parts swapped, truncated, sign-extended, or formatted as a string and parsed incorrectly.
  • A service or broker supplied an adapter identity from another session or namespace without validating it against the consumer's current adapter enumeration.

Diagnostic sequence

  • Log both 32-bit components of the LUID in hexadecimal and record where and when the value was obtained.
  • Enumerate current adapters through the graphics API used by the caller and match the complete LUID, not a device name, ordinal, or vendor/device pair.
  • Record adapter description, hardware ID, driver version, device-removal reason, session, and display topology at acquisition and at failure.
  • Invalidate cached adapter-bound objects after TDR, device removal, power transition, docking, or display reconfiguration. Re-enumerate before retrying.

Difference from neighboring results

DWM_E_NO_REDIRECTION_SURFACE_AVAILABLE can occur even with a valid adapter when DWM cannot provide the required window surface. DWM_E_TEXTURE_TOO_LARGE means the selected path cannot support the requested dimensions. Here the decisive input is adapter identity. Shrinking content or waiting for a surface will not repair a stale LUID.

Recovery

Discard the failed adapter-bound generation, enumerate the adapters visible to the current process/session, select the adapter associated with the target output or window, and rebuild dependent devices and surfaces. Retry only with a newly validated LUID. If the application must persist a user preference, persist a stable descriptive preference and remap it to a current adapter at startup; do not persist a LUID as a durable machine identity.

Telemetry

  • Supplied LUID high/low values, acquisition API, timestamp and object generation.
  • Current adapter enumeration with LUIDs, descriptions, hardware IDs, driver package versions and output mappings.
  • Target HWND, process/session, monitor and presentation adapter.
  • Recent TDR, device-removed result, docking, hot-plug, power or driver-update event.

Practical scenario

A capture runtime records an adapter LUID at startup. The GPU driver is reset and the runtime rebuilds its Direct3D device but continues using the old LUID for a DWM shared-surface request. DWM returns DWM_E_ADAPTER_NOT_FOUND. Re-enumerating and binding the new adapter generation fixes the identity error; retrying with the cached value cannot.

References


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