Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O modelo de driver de vídeo indireto (IDD) fornece um modelo de driver de modo de usuário simples para suportar monitores que não estão conectados às saídas de exibição de GPU tradicionais. Alguns cenários típicos em que um IDD é necessário incluem:
- Streaming da saída de exibição através de uma rede para um cliente remoto (exibição remota).
- Criação de monitores virtuais para aplicações como ambientes de ambiente de trabalho virtual (ecrãs virtuais).
- Conectando um dongle a um PC via USB que tenha 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 um IDD usando a funcionalidade exposta pelo IddCx (Indirect Display Driver Class eXtension) para interagir com os subsistemas gráficos do Windows das seguintes maneiras:
- Crie o adaptador gráfico que representa o dispositivo de exibição indireta.
- Monitores de relatório sendo conectados e desconectados do sistema.
- Forneça descrições dos monitores conectados.
- Forneça modos de exibição disponíveis.
- Suporta outras funcionalidades de visualização, como cursor do rato de hardware, gama, comunicações I2C e conteúdo protegido.
- Processe as imagens da área de trabalho para exibir no monitor.
Como um IDD é um driver UMDF, ele também é responsável pela implementação de todas as funcionalidades UMDF , como comunicações de dispositivos, 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.
Modelo de modo de utilizador
O IDD usa um modelo de modo de usuário e não suporta componentes de modo kernel. Com este modelo, o driver pode usar qualquer API 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 sejam apropriadas para uso do driver, como GDI, APIs de janelas, OpenGL ou Vulkan.
Crie o IDD como um driver universal do Windows para que você possa usá-lo em várias plataformas Windows.
No momento da construção:
- O IDD UMDF indica a versão do IddCx com a qual foi construído.
- O sistema operacional garante que a versão correta do IddCx é carregada quando o driver é carregado.
Convenções de nomenclatura de retorno de chamada e função IddCx
| Prefixo | 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 podem ser chamadas pelos IDDs; por exemplo, IddCxAdapterInitAsync. |
| PFN_IDDCX_XXX | Ponteiros para funções IddCx | Os IDDs não usam esses ponteiros. Os drivers devem, em vez disso, usar as funções equivalentes IddCxXxx. |
Código de exemplo
A Microsoft fornece um exemplo de implementação de IDD no GitHub de amostras de driver do Windows. Este exemplo demonstra como conectar um monitor, como responder a um conjunto de modos e como receber quadros.