Compartilhar via


Drivers espelho

Visão geral

A partir do Windows 8, espelho drivers não serão instalados no sistema. Os drivers espelho descritos nesta seção serão instalados e executados somente em versões anteriores do Windows.

No entanto, um modelo especial de driver de acessibilidade GDI está disponível começando com Windows 8 para desenvolvedores que desejam fornecer recursos de driver espelho em tecnologias adaptativas para clientes com deficiências ou deficiências. Para saber mais sobre esse modelo de driver especial, entre em contato com acc_driver@microsoft.com.

Um modelo de driver de vídeo remoto baseado na arquitetura do driver de espelho também pode ser executado começando com Windows 8, mas foi removido no Windows 10 versão 2004. Para obter mais informações, consulte Drivers de Exibição Remota.

Observação

A partir de Windows 10, os drivers de acessibilidade GDI não são mais recomendados para novos produtos e a Microsoft removerá o suporte em uma versão futura do sistema operacional. O suporte para drivers de exibição remota GDI já foi removido no Windows 10, versão 2004. No entanto, a criação de uma solução de exibição remota ainda é possível criando um Provedor de Protocolo Remoto personalizado e um Driver de Exibição Indireto.

Descrição do driver espelho

Um driver de espelho é um driver de exibição para um dispositivo virtual que espelha as operações de desenho de um ou mais dispositivos de vídeo físicos adicionais. Ele é implementado e se comporta muito como qualquer outro driver de vídeo; no entanto, seu driver de miniporta de vídeo emparelhado é mínimo em comparação com um driver de miniporto típico. Consulte Suporte ao driver espelho em drivers de miniporta de vídeo (modelo Windows 2000) para obter mais informações sobre drivers de miniporta em sistemas de espelhamento. O WDK (Kit de Driver do Windows) por meio da edição do Windows 7 (versão 7600) contém um driver de espelho de exemplo que inclui arquivos de origem de componentes contidos em três diretórios.

Diretório Contém arquivos de origem para
\src\video\displays\espelho\disp O espelho motorista.
\src\video\miniport\espelho\mini O driver de miniporta.
\src\video\displays\espelho\app O serviço de modo de usuário. Também contém espelho.inf.

A GDI dá suporte a uma área de trabalho virtual e fornece a capacidade de replicar uma parte da área de trabalho virtual em um dispositivo espelho. A GDI implementa a área de trabalho virtual como uma camada gráfica acima da camada do driver de vídeo físico. Todas as operações de desenho começam neste espaço de área de trabalho virtual; O GDI corta e renderiza-os nos dispositivos de vídeo físicos apropriados que existem na área de trabalho virtual.

Um dispositivo espelho pode especificar uma região de clipe arbitrária na área de trabalho virtual, incluindo uma que abrange mais de um dispositivo de vídeo físico. Em seguida, a GDI envia ao dispositivo espelho todas as operações de desenho que cruzam a região de clipe do driver. Um dispositivo espelho pode definir uma região de recorte que corresponda exatamente a um determinado dispositivo físico; portanto, ele pode efetivamente espelho esse dispositivo.

Observação

No Windows 2000 e posterior, a região de clipe do driver de espelho deve incluir o dispositivo de exibição primário.

No Windows Vista e posteriores, o DWM (Gerenciador do Windows da Área de Trabalho) será desativado quando o driver de espelho for carregado.

O exemplo de código do driver espelho ilustra como implementar um driver de espelho. Para obter mais informações que ajudarão você a entender o exemplo:

  • Use o arquivo INF de exemplo, espelho.inf, como um modelo. Consulte Arquivo INF do Driver Espelho para obter detalhes.
  • Consulte o aplicativo mirror.exe, que demonstra como o driver de espelho está anexado à área de trabalho virtual. Consulte Instalação do Driver Espelho para obter detalhes.
  • Consulte a documentação do SDK do Windows para obter informações sobre como usar a função Win32 EnumDisplayDevices . Use essa função para determinar o nome \\.\Display# associado ao dispositivo de exibição espelhado. Esse número é necessário para alterar as configurações do dispositivo espelhado. Para várias instâncias, # é um número diferente para cada instância; portanto, você deve determinar esse número iterando por meio dos dispositivos de exibição disponíveis.

Anexando o dispositivo espelhado à área de trabalho global

  1. Adicione a entrada do registro REG_DWORD Attach.ToDesktop às chaves de serviço do driver.

  2. Defina a entrada dessa chave como 1 (uma).

Para desabilitar o driver de espelho, defina essa entrada como 0 (zero).

Conforme mencionado anteriormente, o driver é instalado e opera em uma camada de desenho que reside acima da camada do dispositivo. Como o espaço de coordenadas do driver espelho é o espaço de coordenadas da área de trabalho, ele pode abranger mais de um dispositivo. Se o driver de espelho for destinado a espelho a exibição primária, suas coordenadas de exibição deverão coincidir com as coordenadas da área de trabalho da exibição primária.

  • Depois que o driver de espelho for instalado, ele será chamado para todas as operações de renderização que cruzam a região de exibição do driver. Em um sistema de vários monitores, isso pode não incluir todas as operações de desenho se o driver de espelho sobrepor apenas o dispositivo de exibição primário.

  • É recomendável que um serviço de modo de usuário seja usado para manter as configurações do driver de espelho. Esse aplicativo pode garantir que o driver seja carregado corretamente no momento da inicialização e possa responder adequadamente às alterações na área de trabalho obtendo notificações de alterações de exibição por meio da mensagem WM_DISPLAYCHANGE.

  • A GDI chama o driver de espelho para qualquer operação de desenho DDI de elementos gráficos 2D que intersecione o retângulo delimitador do driver. Observe que a GDI não executa um retângulo delimitador marcar se a superfície for um bitmap de formato de dispositivo; ou seja, se o SURFOBJ tiver um iType de STYPE_DEVBITMAP.

  • Como sempre, o driver de espelho deve ser implementado sem o uso de variáveis globais. Todo o estado deve existir no PDEV para esse driver específico. A GDI chamará DrvEnablePDEV para cada extensão de dispositivo de hardware criada pelo driver de miniporto de vídeo.

  • O driver espelho não deve dar suporte ao DirectDraw.

  • Um driver de espelho deve definir o sinalizador GCAPS_LAYERED como TRUE no membro flGraphicsCaps da estrutura DEVINFO.

  • Um driver de espelho de acessibilidade deve definir os sinalizadores GCAPS2_EXCLUDELAYERED e GCAPS2_INCLUDEAPIBITMAPS como TRUE no membro flGraphicsCaps2 da estrutura DEVINFO.

  • Um driver de espelho pode, opcionalmente, dar suporte a realizações de pincel implementando DrvRealizeBrush.

A GDI permite que o mesmo driver seja executado em um sistema único e de vários monitores. Um driver em um sistema de vários monitores só precisa acompanhar sua posição na área de trabalho global. A GDI fornece essa posição ao driver sempre que ocorre uma chamada ChangeDisplaySettings do Win32, como quando um usuário altera dinamicamente a posição do monitor na área de trabalho usando o programa De exibição no Painel de Controle. A GDI atualiza o membro dmPosition da estrutura DEVMODEW adequadamente quando essa alteração ocorre. Um driver pode receber uma notificação dessa alteração implementando DrvNotify. Consulte Instalação do Driver Espelho para obter mais informações.

Observação

Drivers espelho não são necessários para renderizar com precisão perfeita de pixel ao renderizar no lado do cliente com essa precisão pode ser difícil. Por exemplo, o adaptador/monitor que recebe a imagem espelhada não é necessário para renderizar o desenho de linha de GIQ (Grid Intersect Quantization ) e preenchimentos de polígono com a mesma precisão que o adaptador/monitor que está sendo espelhado.