Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O modelo de driver de exibição indireta (IDD) fornece um modelo simples de driver no modo de usuário para oferecer suporte a monitores que não estão conectados às saídas de exibição tradicionais da GPU. Alguns cenários típicos em que um IDD é necessário incluem:
- Transmissão da saída da tela em uma rede para um cliente remoto (exibição remota).
- Criação de monitores virtuais para aplicativos como ambientes de área de trabalho virtual (exibições virtuais).
- Conectar um dongle a um computador via USB que tem um monitor regular (VGA, DVI, HDMI, DP e assim por diante) conectado a ele.
Implementação de IDD
Um IDD é o driver UMDF fornecido por terceiros para o dispositivo. Você pode desenvolver uma IDD usando a funcionalidade exposta pelo IddCx (EXtension da Classe de Driver de Exibição Indireta) para fazer a interface com os subsistemas gráficos do Windows das seguintes maneiras:
- Crie o adaptador gráfico que representa o dispositivo de exibição indireta.
- Relate monitores sendo conectados e desconectados do sistema.
- Forneça descrições dos monitores conectados.
- Forneça os modos de exibição disponíveis.
- Ofereça suporte a outras funcionalidades de exibição, como cursor do mouse de hardware, gama, comunicações I2C e conteúdo protegido.
- Processe as imagens da área de trabalho a serem exibidas no monitor.
Como um IDD é um driver UMDF, ele também é responsável por implementar todas as funcionalidades do UMDF como comunicações de dispositivo, gerenciamento de energia, plug and play e assim por diante.
O IDD é executado na Sessão 0 sem nenhum componente em execução na sessão do usuário, portanto, qualquer instabilidade do driver não afeta a estabilidade do sistema como um todo.
O diagrama a seguir fornece uma visão geral da arquitetura.
Diagrama que mostra o driver de exibição indireto dentro da arquitetura UMDF.
Modelo de modo de usuário
A IDD usa um modelo de modo de usuário e não dá suporte a componentes do modo kernel. Com esse modelo, o driver pode usar qualquer API do DirectX para processar a imagem da área de trabalho. O IddCx fornece a imagem da área de trabalho para codificar em uma superfície DirectX.
O driver não deve chamar APIs de modo de usuário que não são apropriadas para uso do driver, como GDI, APIs de janelas, OpenGL ou Vulkan.
Crie a IDD como um driver universal do Windows para que você possa usá-la em várias plataformas Windows.
No momento da compilação:
- O IDD UMDF declara a versão do IddCx em que foi criado.
- O sistema operacional garante que a versão correta do IddCx seja carregada quando o driver for carregado.
Retorno de chamada IddCx e convenções de nomenclatura de função
| Prefix | Tipo | Observações |
|---|---|---|
| EVT_IDD_CX_XXX | Função de retorno de chamada IDD | Os IDDs implementam retornos de chamada específicos do IddCx, como EVT_IDD_CX_ADAPTER_COMMIT_MODES, e retornos de chamada WDF relevantes, como EVT_WDF_DEVICE_D0_EXIT. |
| IddCxXxx | Função | Funções de extensão de classe IddCx fornecidas pelo sistema que os IDDs podem chamar, por exemplo, IddCxAdapterInitAsync. |
| PFN_IDDCX_XXX | Ponteiros para funções IddCx | Os IDDs não usam esses ponteiros. Em vez disso, os drivers devem usar as funções equivalentes IddCxXxx. |
Código de exemplo
A Microsoft fornece um exemplo de implementação de IDD no GitHub de exemplos de driver do Windows. Este exemplo demonstra como conectar um monitor, como responder a um conjunto de modos e como receber quadros.