What does HRESULT 0x80263004 (DWM_E_NOT_QUEUING_PRESENTS) mean?

 
Previous Next
DWM_E_NO_REDIRECTION_SURFACE_AVAILABLE DWM_E_ADAPTER_NOT_FOUND

DWM_E_NOT_QUEUING_PRESENTS

DWM is not queuing presents for the window

DWM_E_NOT_QUEUING_PRESENTS is HRESULT 0x80263004 (signed decimal -2144980988, unsigned decimal 2149986308). AllStat's winerror.h description states that the specified window is not currently using queued presents.

This is a state mismatch in the legacy DWM queued-present contract. It is not a generic indication that Present calls are absent, that the GPU queue is empty, or that frame pacing is necessarily broken. The relevant question is whether the target window successfully entered the old DWM queueing mode and remained in that mode when a queue-dependent operation was attempted.

Legacy queued-present context

  • DwmSetPresentParameters used DWM_PRESENT_PARAMETERS, including fQueue, buffering, refresh and source-rate fields, to control frame composition for a window.
  • Microsoft documents this function as no longer supported and says that starting with Windows 8.1 calls return E_NOTIMPL.
  • Microsoft's compatibility guidance deprecates the queued-present model and recommends DXGI flip-model presentation and related present-statistics mechanisms.

What to inspect

  • Identify the queue-dependent call and the earlier call that was expected to enable queueing. Preserve both HRESULTs; a failed or unsupported setup call explains why the later operation sees no queue.
  • Record the exact HWND and a window-generation identifier. Destroying and recreating a window invalidates state associated with the old handle even when the title and visual role are unchanged.
  • Check whether code explicitly set fQueue to false, restored default presentation behavior, changed fullscreen/windowed mode, or rebuilt the rendering pipeline without re-establishing the legacy state.
  • On modern Windows, verify whether the feature is simply unsupported rather than trying to infer queue state from DWM timing information.

Difference from timing and surface failures

DWM_E_NO_REDIRECTION_SURFACE_AVAILABLE concerns compositor surface availability. DWM_E_TEXTURE_TOO_LARGE concerns dimensions. DWM_E_NOT_QUEUING_PRESENTS concerns a mode that was never enabled, was disabled, or no longer belongs to the current window generation. It should lead to presentation-state inspection, not texture resizing or adapter replacement.

Correct recovery

For software that must still support an old operating system and documented legacy path, establish queueing successfully before invoking queue-dependent operations, and tear down that state coherently on window destruction or mode change. For maintained software on current Windows, migrate away from the queued-present model. Use supported DXGI flip presentation, frame-latency controls, and present statistics appropriate to the application's API. Do not loop on this HRESULT: without a successful mode transition, the result is deterministic.

Telemetry

  • Windows build, DWM API, target window generation, rendering API and swap-chain presentation model.
  • Parameters and return value from the queue-enable attempt, including fQueue, buffer count and source-rate fields.
  • Fullscreen/windowed transitions, recreation of the window or swap chain, remote-session changes, and the timestamp of the last successful queued operation.
  • Fallback selected and frame-pacing behavior after switching to the supported presentation path.

Practical scenario

A legacy video renderer enables queued presents during initialization, later recreates its top-level window after a DPI transition, but retains a queue-dependent timing object from the old window. The operation returns DWM_E_NOT_QUEUING_PRESENTS. The durable fix is to bind presentation state to the window generation—or, on current Windows, replace the deprecated queueing design with DXGI flip-model presentation.

References


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