IDXGIOutputDuplication 接口 (dxgi1_2.h)

IDXGIOutputDuplication 接口访问和操作重复的桌面映像。

继承

IDXGIOutputDuplication 接口继承自 IDXGIObjectIDXGIOutputDuplication 还具有以下类型的成员:

方法

IDXGIOutputDuplication 接口包含以下方法。

 
IDXGIOutputDuplication::AcquireNextFrame

指示应用程序已准备好处理下一个桌面映像。
IDXGIOutputDuplication::GetDesc

检索重复输出的说明。 此说明指定包含桌面图像的图面的尺寸。
IDXGIOutputDuplication::GetFrameDirtyRects

获取有关当前桌面框架脏矩形的信息。
IDXGIOutputDuplication::GetFrameMoveRects

获取有关当前桌面框架的移动矩形的信息。
IDXGIOutputDuplication::GetFramePointerShape

获取有关当前桌面框架的新指针形状的信息。
IDXGIOutputDuplication::MapDesktopSurface

如果桌面映像已在系统内存中,则为 CPU 提供对桌面映像的有效访问。
IDXGIOutputDuplication::ReleaseFrame

指示应用程序已完成处理帧。
IDXGIOutputDuplication::UnMapDesktopSurface

使指向使用 IDXGIOutputDuplication::MapDesktopSurface 检索到的桌面图像的指针失效。

备注

协作应用程序可以使用 IDXGIOutputDuplication 访问桌面映像。 在非 8bpp DirectX 全屏模式和非 8bpp OpenGL 全屏模式下,桌面窗口管理器 (DWM) 支持 IDXGIOutputDuplication。 不支持 16 位或 32 位 GDI 非 DWM 桌面模式。

应用程序可以在单独的线程上使用 IDXGIOutputDuplication 来接收桌面映像并将它们馈送到其特定的图像处理管道中。 应用程序使用 IDXGIOutputDuplication 执行以下操作:

  1. 获取下一个桌面映像。
  2. 检索描述图像的信息。
  3. 对映像执行操作。 此操作可以像将图像复制到暂存缓冲区一样简单,以便应用程序可以读取图像上的像素数据。 应用程序在调用 IDXGISurface::Map 后读取像素数据。 或者,此操作可能更复杂。 例如,应用程序可以在图像的更新区域上运行一些像素着色器,以便对这些区域进行编码,以便传输到客户端。
  4. 应用程序处理完每个桌面映像后,会释放映像,循环到步骤 1,然后重复这些步骤。 应用程序将重复这些步骤,直到完成桌面图像的处理。
操作系统的以下组件可以生成桌面映像:
  • 通过组合桌面映像的 DWM
  • 全屏 DirectX 或 OpenGL 应用程序
  • 通过切换到单独的桌面的应用程序,例如用于显示登录屏幕的安全桌面
当操作系统切换到生成桌面映像的其他组件或发生模式更改时,所有当前的 IDXGIOutputDuplication 接口都无效。 在这些情况下,应用程序必须销毁其当前的 IDXGIOutputDuplication 接口,并创建新的 IDXGIOutputDuplication 接口。

IDXGIOutputDuplication 变为无效的情况的示例包括:

  • 桌面交换机
  • 模式更改
  • 从 DWM 打开、DWM 关闭或其他全屏应用程序切换
在这些情况下,应用程序必须释放 IDXGIOutputDuplication 接口,并且必须为新内容创建新的 IDXGIOutputDuplication 接口。 如果应用程序对新桌面映像没有适当的权限,则它对 IDXGIOutput1::D uplicateOutput 方法的调用将失败。

当应用程序处理每个桌面映像时,操作系统会将所有桌面映像更新累积到单个更新中。 有关桌面更新的详细信息,请参阅 更新桌面映像数据

桌面映像始终采用 DXGI_FORMAT_B8G8R8A8_UNORM 格式。

对于 Windows 应用商店应用, IDXGIOutputDuplication 接口不存在。

要求

   
最低受支持的客户端 Windows 8 [仅限桌面应用]
最低受支持的服务器 Windows Server 2012 [仅限桌面应用]
目标平台 Windows
标头 dxgi1_2.h

请参阅

DXGI 接口

IDXGIObject