iddCx 1.7 及更高版本的汇报

本页介绍 IddCx 1.7 中所做的更改。 基于 IddCx 1.7 生成的单个间接显示驱动程序 (IDD) 二进制文件可以在 Windows 10 版本 1803 及更高版本上运行,使用运行时检查来验证 IddCx 1.7 中的 DDI 更改是否在该系统上可用。 有关详细信息 ,请参阅生成适用于多个 Windows 版本的 WDF 驱动程序

IddCx 1.7 更改分为以下类别:

  • IddCxGetVersion 版本已 (控制台和远程) 更新。 有关 IddCx 相关版本 信息的完整列表,请参阅 IddCx 版本。
  • 添加了改进的鼠标光标 DDI, (可用于主机和远程,但仅适用于远程) 。
  • IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS适配器标志已弃用 (控制台和远程) 。

更新了 IddCxGetVersion 版本

Windows Server 2022 上的 IddCxGetVersion 返回的 IddCx 版本已更新为 IDDCX_VERSION_IRON (0x1700) 。

更新了远程驱动程序的鼠标光标

1.7 之前的 IddCx 版本中的远程 ID 仅接收 用于过程 游标移动的鼠标更新。 程序游标移动是由来自服务器上的应用程序或 OS 的 API 调用而不是由从远程客户端注入远程会话的鼠标输入引起的位置更改。 这会导致远程会话特有的一些问题。 例如:

  1. 在 IddCx 1.6 及更低版本中,远程驱动程序无法判断 API 调用是否将鼠标位置设置为同一位置两次。
  2. 如果没有有效位置,则无法触发光标形状或可见性的变化。 这不是主机 ID 的问题。 但是,对于远程驱动程序,当没有任何有效的过程位置更改时,DDI 必须提供一个位置值,这将导致光标在客户端中跳转。

为了解决这些问题,从 IddCx 1.7 开始进行了以下更改。

已添加IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION标志

IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION适配器标志已添加到 IDDCX_ADAPTER_FLAGS,以允许远程驱动程序接收所有鼠标位置更新。 此标志允许远程驱动程序基于适配器指示它希望接收所有游标位置更改,而不仅仅是过程移动。 仅当与 IDDCX_ADAPTER_FLAGS_REMOTE_SESSION_DRIVER 结合使用时,此标志才有效。 如果未IDDCX_ADAPTER_FLAGS_REMOTE_SESSION_DRIVER设置IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION,IddCxAdapterInitAsync 将失败。

为游标位置添加了 IddCxMonitorQueryHardwareCursor2 DDI

IddCxMonitorQueryHardwareCursor2 DDI 提供游标位置信息。 此 DDI 返回 IDARG_OUT_QUERY_HWCURSOR2 结构。 远程和控制台驱动程序都可以调用此 DDI,但 IDARG_OUT_QUERY_HWCURSOR2 结构中的信息与主机驱动程序不太相关。

IDARG_OUT_QUERY_HWCURSOR2 结构返回以下附加游标信息:

  • 位置 ID (PositionId)

    在 IddCx 1.7 之前, 光标 DDI 使用 形状 ID ,以便驱动程序可以知道自上次更新以来形状是否已更改。 从 IddCx 1.7 开始,已添加位置 ID。 如果报告了新的游标位置,即使新位置的 XY 坐标与旧位置相同,位置 ID 值也会更改。

  • PositionValid) (位置有效标志

    PositionValid 向驱动程序指示游标信息结构中的光标位置是否有效。 此有效标志涵盖 XYPositionId 字段。 如果未设置此标志,则无法使用 XYPositionId 字段。

IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS标志已弃用 (控制台和远程)

由于桌面的呈现方式发生了变化,从 IddCx 1.7 开始,将不再在获取帧时提供移动区域。 相反,在获取帧时提供的脏 rects 列表包含图像和IDDCX_METADATA的所有更改区域。MoveRegionCount 将始终为零。

驱动程序仍然可以为 IddCx 1.7 及更高版本设置 IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS 标志,但它不起作用。 如果驱动程序设计为在 pre-IddCx 1.7 上运行并设置 标志,则该驱动程序必须具有处理移动的逻辑;否则,在 IddCx 1.7 之前的系统上运行时,用户将看到视觉问题。