IDXGIOutput1::D uplicateOutput 方法 (dxgi1_2.h)
从表示适配器输出的 IDXGIOutput1 接口创建桌面重复接口。
语法
HRESULT DuplicateOutput(
[in] IUnknown *pDevice,
[out] IDXGIOutputDuplication **ppOutputDuplication
);
参数
[in] pDevice
指向 Direct3D 设备接口的指针,可用于处理桌面映像。 必须从输出连接到的适配器创建此设备。
[out] ppOutputDuplication
指向接收新 IDXGIOutputDuplication 接口的变量的指针。
返回值
DuplicateOutput 返回:
- 如果 DuplicateOutput 已成功创建桌面重复接口,S_OK。
- E_INVALIDARG以下原因之一:
- 指定的设备 (pDevice) 无效,未在正确的适配器上创建,或者不是从 IDXGIFactory1 (或更高版本的 DXGI 工厂接口(继承自 IDXGIFactory1) )创建的。
- 调用应用程序已在复制此桌面输出。
- 如果应用程序对当前桌面映像没有访问权限,则E_ACCESSDENIED。 例如,只有LOCAL_SYSTEM运行的应用程序才能访问安全桌面。
- 如果创建的 IDXGIOutputDuplication 接口不支持当前桌面模式或方案,DXGI_ERROR_UNSUPPORTED。 例如,不支持 8bpp 和非 DWM 桌面模式。 如果 DuplicateOutput 失败并出现DXGI_ERROR_UNSUPPORTED,应用程序可以等待桌面交换机和模式更改的系统通知,然后在此类通知发生后再次调用 DuplicateOutput 。 有关详细信息,请参阅 EVENT_SYSTEM_DESKTOPSWITCH 和模式更改通知 (WM_DISPLAYCHANGE) 。
- DXGI_ERROR_NOT_CURRENTLY_AVAILABLE如果 DXGI 达到并发重复应用程序的最大数量限制,则 (默认为 4 个) 。 因此,在其他应用程序关闭之前,调用应用程序无法创建任何桌面重复接口。
- 如果 DuplicateOutput 由于会话当前已断开连接而失败,则DXGI_ERROR_SESSION_DISCONNECTED。
- DXGI_ERROR主题中介绍了其他错误代码。
适用于 Windows 7 的平台更新: 在安装了适用于 Windows 7 的平台更新的 Windows 7 或 Windows Server 2008 R2 上, DuplicateOutput 失败并E_NOTIMPL。 有关适用于 Windows 7 的平台更新的详细信息,请参阅 适用于 Windows 7 的平台更新。
注解
如果应用程序想要复制整个桌面,则必须在桌面上的每个活动输出上创建一个桌面重复接口。 此接口不提供同步每个输出图像的计时的显式方法。 相反,应用程序必须使用每个输出的时间戳,然后确定如何组合图像。
要使 DuplicateOutput 成功,必须从 IDXGIFactory1 或更高版本的 DXGI 工厂接口(继承自 IDXGIFactory1)创建 pDevice。
如果当前模式是立体声模式,桌面复制接口仅为左侧立体声图像提供图像。
默认情况下,在单个会话中,只有四个进程可以同时使用 IDXGIOutputDuplication 接口。 一个进程在单个桌面输出上只能有一个桌面重复接口;但是,该进程可以为作为桌面一部分的每个输出提供桌面重复接口。
为了提高性能,请考虑使用 DuplicateOutput1。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 适用于 Windows 7 的Windows 8和平台更新 [仅限桌面应用] |
最低受支持的服务器 | 适用于 Windows Server 2008 R2 的Windows Server 2012和平台更新 [仅限桌面应用] |
目标平台 | Windows |
标头 | dxgi1_2.h |
Library | Dxgi.lib |