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

另请参阅

DuplicateOutput1

IDXGIOutput1