{"record":{"id":"34f207e563cc7846","repo":"MathewSachin/Captura","slug":"desktop-duplication-is-not-supported-on-this-syste","errorCode":null,"errorMessage":"Desktop Duplication is not supported on this system.\\nIf you have multiple graphic cards, try running Captura on integrated graphics.","messagePattern":"Desktop Duplication is not supported on this system\\.\\\\nIf you have multiple graphic cards, try running Captura on integrated graphics\\.","errorType":"exception","errorClass":"NotSupportedException","httpStatus":null,"severity":"error","filePath":"src/Captura.Windows/DesktopDuplication/DuplCapture.cs","lineNumber":72,"sourceCode":"            {\n                _frameGrabber?.Dispose();\n                _deskDupl?.Dispose();\n\n                try\n                {\n                    _deskDupl = _output.DuplicateOutput(_device);\n\n                    _frameGrabber = new FrameGrabber(_deskDupl);\n                }\n                catch (SharpDXException e) when (e.Descriptor == ResultCode.NotCurrentlyAvailable)\n                {\n                    throw new Exception(\n                        \"There is already the maximum number of applications using the Desktop Duplication API running, please close one of the applications and try again.\",\n                        e);\n                }\n                catch (SharpDXException e) when (e.Descriptor == ResultCode.Unsupported)\n                {\n                    throw new NotSupportedException(\n                        \"Desktop Duplication is not supported on this system.\\nIf you have multiple graphic cards, try running Captura on integrated graphics.\",\n                        e);\n                }\n            }\n        }\n\n        public bool Get(Texture2D Texture, DxMousePointer DxMousePointer, Point TargetPosition = default)\n        {\n            lock (_syncLock)\n            {\n                // Disposed\n                if (_device == null)\n                    return false;\n\n                if (_bkpTexture == null)\n                {\n                    var desc = Texture.Description;\n                    desc.Width = _width;","sourceCodeStart":54,"sourceCodeEnd":90,"githubUrl":"https://github.com/MathewSachin/Captura/blob/3fdf41529bf4d50cd7a85aedd856f30e34279a47/src/Captura.Windows/DesktopDuplication/DuplCapture.cs#L54-L90","documentation":"Thrown by DuplCapture.Init (src/Captura.Windows/DesktopDuplication/DuplCapture.cs:72) as NotSupportedException when output.DuplicateOutput raises a SharpDXException whose Descriptor equals DXGI ResultCode.Unsupported. DXGI returns Unsupported when the Desktop Duplication API is fundamentally unavailable on this configuration (pre-Win8 OS, missing WDDM driver, unsupported GPU, or running under RDP/non-session-0 conditions).","triggerScenarios":"Calling Output1.DuplicateOutput on a system where DXGI Desktop Duplication cannot be created: OS older than Windows 8, no D3D11 feature-level device, driver not WDDM-capable, or the process runs in an RDP/locked session that does not expose a desktop to duplicate.","commonSituations":"Captura run over Remote Desktop; a VM without 3D acceleration; very old GPUs/drivers; multi-GPU systems where the discrete adapter is selected instead of the integrated one driving the display.","solutions":["Run on a physical Windows 8+ desktop session with a WDDM D3D11-capable GPU.","For multi-GPU systems, force Captura onto the integrated GPU that owns the display.","Update GPU drivers to a WDDM version supporting desktop duplication.","Do not use Desktop Duplication over RDP; select a different capture source."],"exampleFix":"// before\n_deskDupl = _output.DuplicateOutput(_device);\n// after - probe capability and degrade gracefully\ntry { _deskDupl = _output.DuplicateOutput(_device); }\ncatch (SharpDXException e) when (e.Descriptor == ResultCode.Unsupported)\n{ throw new NotSupportedException(\"Desktop Duplication unsupported here; use GDI/BitBlt source\", e); }","handlingStrategy":"fallback","validationCode":"// probe desktop duplication support up front\nbool supported;\ntry { using (var d = output.DuplicateOutput(device)) { supported = true; } }\ncatch (SharpDXException e) when (e.Descriptor == ResultCode.Unsupported) { supported = false; }","typeGuard":"static bool DesktopDuplicationSupported(Output1 output, Device device)\n{ try { using (output.DuplicateOutput(device)) {} return true; } catch (SharpDXException e) { return e.Descriptor != ResultCode.Unsupported; } }","tryCatchPattern":"try { capture.Init(); }\ncatch (NotSupportedException e) { /* fall back to BitBlt/GDI capture source */ }","preventionTips":["Offer a non-Duplication capture source (BitBlt) as a fallback.","On multi-GPU systems, run on the integrated GPU that owns the display.","Do not enable Desktop Duplication in RDP/locked sessions."],"tags":["desktop-duplication","dxgi","sharpdx","unsupported","windows","csharp"],"backgroundTag":null,"analyzedSha":"3fdf41529bf4d50cd7a85aedd856f30e34279a47","analyzedAt":"2026-08-13T19:35:27.486Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}