Compartir a través de


Actualizaciones de las versiones 1.7 y posteriores de IddCx

En esta página se describen los cambios realizados en IddCx 1.7. Un único binario de controlador de visualización indirecta (IDD) compilado con IddCx 1.7 puede ejecutarse en Windows 10, versión 1803 y versiones posteriores mediante comprobaciones en tiempo de ejecución para comprobar si los cambios de DDI en IddCx 1.7 están disponibles en ese sistema. Consulta Compilar un controlador WDF para varias versiones de Windows para obtener más información.

Los cambios de IddCx 1.7 se dividen en las siguientes categorías:

  • La versión iddCxGetVersion se actualizó (consola y remoto). Consulte Versiones de IddCx para obtener una lista completa de la información de versión relacionada con IddCx.
  • Se ha agregado un DDI de cursor de ratón mejorado (disponible para consola y remoto, pero solo útil de manera remota).
  • La bandera de adaptador IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS ha quedado obsoleta para consola y acceso remoto.

Versión actualizada de IddCxGetVersion

La versión iddCx devuelta por IddCxGetVersion en Windows Server 2022 se actualizó a IDDCX_VERSION_IRON (0x1700).

Cursor del mouse actualizado para controladores remotos

Los IDD remotos en versiones de IddCx anteriores a la versión 1.7 solo reciben actualizaciones del mouse para los movimientos de cursor procedurales. Un movimiento de cursor procedimental es un cambio de posición causado por una llamada a la API desde una aplicación o desde el sistema operativo en el servidor, y no por la entrada del ratón inyectada en la sesión remota desde el cliente remoto. Esto provoca algunos problemas que son únicos para las sesiones remotas. Por ejemplo:

  1. En IddCx 1.6 y versiones anteriores, el controlador remoto no puede saber si una llamada API establece una posición del mouse en la misma posición dos veces.
  2. No se puede desencadenar un cambio en la forma o visibilidad del cursor sin una posición válida. No es un problema para los IDD de consola. Sin embargo, en el caso de los controladores remotos, cuando no haya habido ningún cambio de posición de procedimiento válido, el DDI tendría que proporcionar un valor de posición que provocaría que el cursor diera un salto en el cliente.

Para solucionar estos problemas, se realizaron los siguientes cambios a partir de IddCx 1.7.

Se agregó el indicador IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION.

La bandera del adaptador IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION se agregó a IDDCX_ADAPTER_FLAGS para permitir que los controladores remotos reciban todas las actualizaciones de la posición del cursor. Esta bandera permite que un controlador remoto indique que, basado en un adaptador, quiere recibir todos los cambios de posición del cursor y no solo los movimientos estándar. Esta marca solo es válida cuando se combina con IDDCX_ADAPTER_FLAGS_REMOTE_SESSION_DRIVER. iddCxAdapterInitAsync producirá un error si se establece IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION sin IDDCX_ADAPTER_FLAGS_REMOTE_SESSION_DRIVER.

IddCxMonitorQueryHardwareCursor2 DDI se incorporó para la posición del cursor

IddCxMonitorQueryHardwareCursor2 DDI proporciona información sobre la posición del cursor. Esta DDI devuelve una estructura IDARG_OUT_QUERY_HWCURSOR2 . Tanto los controladores remotos como los controladores de consola pueden llamar a esta DDI, pero la información de la estructura de IDARG_OUT_QUERY_HWCURSOR2 no es muy relevante para los controladores de consola.

La estructura IDARG_OUT_QUERY_HWCURSOR2 devuelve la siguiente información adicional del cursor:

  • Identificador de posición (PositionId)

    Antes de IddCx 1.7, el DDI del cursor usa un identificador de forma para que el controlador pueda saber si la forma ha cambiado desde la última actualización. A partir de IddCx 1.7, se agregó un identificador de posición. El valor del identificador de posición cambia si se ha notificado una nueva posición del cursor, incluso si las coordenadas X e Y de la nueva posición son las mismas que las antiguas.

  • Una marca válida de posición (PositionValid)

    PositionValid indica al controlador si la posición del cursor en la estructura de información del cursor es válida. Esta marca válida cubre los campos X, Y y PositionId . Si no se establece esta marca, no se pueden usar los campos X, Y y PositionId .

IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS marca en desuso (consola y remoto)

Debido a los cambios en la forma en que se representa el escritorio, a partir de IddCx 1.7, las regiones de desplazamiento ya no se proporcionarán al momento de adquirir el fotograma. En su lugar, la lista de rectángulos sucios proporcionada en el momento de adquirir el cuadro contiene todas las regiones modificadas de la imagen y IDDCX_METADATA. MoveRegionCount siempre será cero.

Los controladores todavía pueden establecer la bandera IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS para IddCx 1.7 y versiones posteriores, sin que tenga efecto. Si un controlador está diseñado para ejecutarse en sistemas anteriores a IddCx 1.7 y establece la bandera, debe tener la lógica para procesar los movimientos; de lo contrario, los usuarios verán problemas visuales al ejecutarse en sistemas anteriores a IddCx 1.7.