桌面复制
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。