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.
A estrutura IddCx (Indirect Display Driver Class eXtension) usa o modelo de objeto UMDF extensível para representar os vários componentes de dispositivos de exibição indiretos. O modelo de objeto UMDF permite que o armazenamento específico do driver seja associado a cada objeto IddCx (e, portanto, UMDF). Para obter mais informações, consulte o modelo de objeto UMDF.
A ordem na qual os objetos IDD são criados é:
- O driver primeiro cria um objeto IDDCX_ADAPTER .
- Em seguida, o driver cria um objeto IDDCX_MONITOR .
- Depois que os objetos IDDCX_ADAPTER e IDDCX_MONITOR forem criados, o sistema operacional criará objetos IDDCX_SWAPCHAIN e IDDCX_OPMCTX e os enviará ao driver.
As seções a seguir fornecem mais detalhes sobre esses objetos.
IDDCX_ADAPTER
Esse objeto representa um único adaptador de exibição lógico criado pelo driver em um processo de dois estágios:
- O driver chama a função de retorno de chamada IddCxAdapterInitAsync .
- O sistema operacional chama a DDI EvtIddCxAdapterInitFinished do driver para concluir a inicialização.
O modelo de IDD não possui um callback explícito para o adaptador destruidor. Depois que a sequência de inicialização do adaptador for concluída com êxito, o adaptador será válido até que o dispositivo UMDF passado no momento da inicialização seja interrompido. Quando o driver de exibição indireto (IDD) cria o adaptador, ele fornece informações estáticas do adaptador sobre o adaptador de exibição indireto.
Manipulando dispositivos multifuncionais
No caso mais simples, há um mapeamento um-para-um entre o objeto de dispositivo UMDF criado pelo subsistema plug-and-play para o dispositivo de exibição indireto anexado e o objeto IDDCX_ADAPTER que a IDD cria.
Pode haver cenários mais complexos em que um único dongle de exibição indireto contém vários dispositivos plug-and-play. Por exemplo, uma solução de exibição indireta pode ter várias funções de dispositivo PnP, como microfone (driver de áudio) e câmera (driver de vídeo). Nessas situações, a IDD é responsável por criar um único objeto IDDCX_ADAPTER para os vários objetos de dispositivo UMDF criados para cada dispositivo PnP. O driver precisa considerar os seguintes pontos neste cenário:
- O IDDCX_ADAPTER só deve ser criado quando todos os dispositivos PnP que compõem a solução de exibição indireta forem iniciados com êxito.
- O driver deve passar um único WDFDEVICE ao criar o adaptador, portanto, ele requer lógica para decidir qual dispositivo UMDF ele passará.
- Se qualquer um dos dispositivos que compõem o adaptador de exibição indireto tiver um erro de hardware, o driver deverá reportar todos os dispositivos que compõem o adaptador como estando com erro.
IDDCX_MONITOR
Esse objeto representa um monitor específico conectado a um dos conectores no adaptador de exibição indireto.
O driver cria o objeto monitor em um processo de dois estágios:
- Primeiro, ele chama o retorno de chamada IddCxMonitorCreate para criar o objeto IDDCX_MONITOR.
- Em seguida, ele chama o callback IddCxMonitorArrival para concluir a chegada do monitor.
Quando um monitor é desconectado, o driver chama a função IddCxMonitorDeparture para reportá-lo. Essa chamada faz com que o objeto IDDCX_MONITOR seja destruído. Mesmo que o mesmo monitor esteja desconectado e reconectado, a sequência IddCxMonitorDeparture/IddCxMonitorArrival precisará ser chamada novamente.
O IDDCX_MONITOR é filho do objeto IDDCX_ADAPTER .
IDDCX_SWAPCHAIN
Esse objeto representa um swapchain que fornece imagens da área de trabalho para exibição em um monitor conectado. O swapchain tem vários buffers para permitir que o sistema operacional componha a próxima imagem da área de trabalho em um buffer enquanto a IDD está acessando outro buffer. O IDDCX_SWAPCHAIN é um filho do IDDCX_MONITOR, portanto, há apenas um swapchain atribuído a um determinado monitor em qualquer momento.
O sistema operacional cria e destrói os objetos IDDCX_SWAPCHAIN e atribui/desatribui-os a monitores usando as chamadas EvtIddCxMonitorAssignSwapChain e EvtIddCxMonitorUnassignSwapChain .
IDDCX_OPMCTX
Esse objeto representa um contexto ativo do OPM ( Output Protection Manager ) de um único contexto OPM de aplicativo que o aplicativo pode usar para controlar a proteção de saída em um único monitor. Vários contextos OPM podem estar ativos em um determinado monitor ao mesmo tempo. O sistema operacional chama o driver para criar e destruir os contextos do OPM usando as chamadas DDI do driver, EvtIddCxMonitorOPMCreateProtectedOutput e EvtIddCxMonitorOPMDestroyProtectedOutput.