桌面复制

Windows 8引入了新的 Microsoft DirectX 图形基础结构 (DXGI) API,使独立软件供应商 (ISV) 更容易地支持桌面协作和远程桌面访问方案。

此类应用程序在企业和教育方案中广泛使用。 这些应用程序有一个共同的要求:访问桌面内容以及将内容传输到远程位置的能力。 Windows 8桌面复制 API 提供对桌面内容的访问权限。

目前,没有 Windows API 允许应用程序无缝实现此方案。 因此,应用程序使用镜像驱动程序、屏幕抓取和其他专有方法来访问桌面内容。 但是,这些方法具有以下一组限制:

  • 优化性能可能很困难。
  • 这些解决方案可能不支持较新的图形呈现 API,因为这些 API 是在产品交付后发布的。
  • Windows 并不总是提供丰富的元数据来帮助优化。
  • 并非所有解决方案都与 Windows Vista 和更高版本的 Windows 中的桌面组合兼容。

Windows 8引入了一个名为桌面重复 API 的基于 DXGI 的 API。 此 API 提供对桌面内容的访问,方法是使用位图和关联的元数据进行优化。 此 API 适用于已启用 Aero 主题,并且不依赖于应用程序使用的图形 API。 如果用户可以在本地控制台上查看应用程序,则也可以远程查看内容。 这意味着即使全屏 DirectX 应用程序也可以复制。 请注意,API 提供保护,防止访问受保护的视频内容。

通过 API,应用程序可以请求 Windows 提供对桌面内容沿监视器边界的访问。 应用程序可以复制一个或多个活动显示器。 当应用程序请求重复时,会发生以下情况:

  • Windows 呈现桌面并提供应用程序的副本。
  • 每个呈现的帧都放置在 GPU 内存中。
  • 每个呈现的帧都附带以下元数据:
    • 脏区域
    • 屏幕到屏幕移动
    • 鼠标光标信息
  • 向应用程序提供对帧和元数据的访问权限。
  • 应用程序负责处理每个帧:
    • 应用程序可以选择基于脏区域进行优化。
    • 应用程序可以选择使用硬件加速来处理移动和鼠标数据。
    • 应用程序可以选择在流出之前使用硬件加速进行压缩。

有关详细文档和示例,请参阅 桌面重复 API