Compartilhar via


Objetos IddCx

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 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.