Compartilhar via


Atualizações para versões 1.7 e posteriores do IdDCx

Esta página descreve as alterações feitas no IddCx 1.7. Um único binário de driver de exibição indireto (IDD) criado com base no IddCx 1.7 pode ser executado em Windows 10, versão 1803 e superior usando verificações de runtime para verificar se as alterações de DDI no IddCx 1.7 estão disponíveis nesse sistema. Consulte Criando um driver WDF para várias versões do Windows para obter mais informações.

As alterações do IddCx 1.7 se enquadram nas seguintes categorias:

  • A versão IddCxGetVersion foi atualizada (console e remoto). Consulte Versões do IddCx para obter uma lista completa das informações de versão relacionadas ao IddCx.
  • Uma DDI de cursor do mouse aprimorada foi adicionada (disponível para console e remoto, mas somente útil do remoto).
  • O sinalizador do adaptador IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS foi preterido (console e remoto).

Versão atualizada do IddCxGetVersion

A versão IddCx retornada por IddCxGetVersion no Windows Server 2022 foi atualizada para IDDCX_VERSION_IRON (0x1700).

Cursor do mouse atualizado para drivers remotos

IDDs remotas em versões IddCx anteriores à 1.7 recebem apenas atualizações de mouse para movimentações de cursor de procedimento . Uma movimentação de cursor de procedimento é uma alteração de posição causada por uma chamada à API de um aplicativo ou do sistema operacional no servidor, e não pela entrada do mouse injetada na sessão remota do cliente remoto. Isso leva a alguns problemas que são exclusivos para sessões remotas. Por exemplo:

  1. No IddCx 1.6 e versões anteriores, o driver remoto não pode informar se uma chamada à API definiu uma posição do mouse para a mesma posição duas vezes.
  2. Uma alteração na forma ou visibilidade do cursor não pode ser disparada sem uma posição válida. Isso não é um problema para IDDs de console. No entanto, para drivers remotos, quando não houver nenhuma alteração de posição de procedimento válida, a DDI teria que fornecer um valor de posição que faria com que o cursor pulasse no cliente.

Para resolver esses problemas, as seguintes alterações foram feitas a partir do IddCx 1.7.

IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION sinalizador foi adicionado

O sinalizador do adaptador IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION foi adicionado ao IDDCX_ADAPTER_FLAGS para permitir que os drivers remotos recebam todas as atualizações de posição do mouse. Esse sinalizador permite que um driver remoto indique em uma base de adaptador que deseja receber todas as alterações de posição do cursor e não apenas movimentações processuais. Esse sinalizador só é válido quando combinado com IDDCX_ADAPTER_FLAGS_REMOTE_SESSION_DRIVER. IddCxAdapterInitAsync falhará se IDDCX_ADAPTER_FLAGS_REMOTE_ALL_CURSOR_POSITION estiver definido sem IDDCX_ADAPTER_FLAGS_REMOTE_SESSION_DRIVER.

IddCxMonitorQueryHardwareCursor2 DDI foi adicionado para a posição do cursor

A DDI IddCxMonitorQueryHardwareCursor2 fornece informações de posição do cursor. Essa DDI retorna uma estrutura IDARG_OUT_QUERY_HWCURSOR2 . Os drivers remotos e de console podem chamar essa DDI, mas as informações na estrutura de IDARG_OUT_QUERY_HWCURSOR2 não são muito relevantes para drivers de console.

A estrutura IDARG_OUT_QUERY_HWCURSOR2 retorna as seguintes informações de cursor adicionais:

  • Uma ID de posição (PositionId)

    Antes do IddCx 1.7, o cursor DDI usa uma ID de forma para que o driver possa saber se a forma foi alterada desde a última atualização. A partir do IddCx 1.7, uma ID de posição foi adicionada. O valor da ID de posição será alterado se uma nova posição do cursor tiver sido relatada, mesmo que as coordenadas X e Y da nova posição sejam as mesmas que as antigas.

  • Um sinalizador válido de posição (PositionValid)

    PositionValid indica ao driver se a posição do cursor na estrutura de informações do cursor é válida. Esse sinalizador válido abrange os campos X, Y e PositionId . Se esse sinalizador não estiver definido, os campos X, Y e PositionId não poderão ser usados.

IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS sinalizador preterido (console e remoto)

Devido a alterações na maneira como a área de trabalho é renderizada, a partir das regiões de movimentação do IddCx 1.7 não será mais fornecida no momento da aquisição do quadro. Em vez disso, a lista de rects sujo fornecida no momento do período de aquisição contém todas as regiões alteradas da imagem e IDDCX_METADATA.MoveRegionCount sempre será zero.

Os drivers ainda podem definir o sinalizador de IDDCX_ADAPTER_FLAGS_CAN_USE_MOVE_REGIONS para IddCx 1.7 e superior, mas isso não terá efeito. Se um driver for projetado para ser executado no pré-IddCx 1.7 e definir o sinalizador, esse driver deverá ter a lógica para processar as movimentações; caso contrário, os usuários verão problemas visuais ao executar em sistemas pré-IddCx 1.7.