Поделиться через


Объекты IddCx

IddCx (класс eXtension) использует расширяемую объектную модель UMDF для представления компонентов устройства непрямого отображения. Объектная модель UMDF позволяет связать хранилище для конкретного драйвера с каждым объектом IddCx (и, следовательно, UMDF). Дополнительные сведения см. в разделе Объектная модель UMDF .

Порядок создания объектов IDD:

  • Драйвер сначала создает объект IDDCX_ADAPTER .
  • Затем драйвер создает объект IDDCX_MONITOR .
  • После создания объектов IDDCX_ADAPTER и IDDCX_MONITOR ОС создает объекты IDDCX_SWAPCHAIN и IDDCX_OPMCTX и отправляет их драйверу.

В следующих разделах содержатся дополнительные сведения об этих объектах.

IDDCX_ADAPTER

Этот объект представляет один логический адаптер отображения, созданный драйвером в двухэтапном процессе:

Модель IDD не имеет явного обратного вызова адаптера удаления. После успешного завершения последовательности инициализации адаптер будет действителен, пока устройство UMDF, переданное во время инициализации, не будет остановлено. При создании адаптера драйвер предоставляет статические сведения о адаптере непрямого дисплея.

Обработка многофункциональных устройств

В простейшем случае существует сопоставление "один к одному" между объектом устройства UMDF, созданным подсистемой plug and play для подключенного непрямого устройства отображения, и объектом IDDCX_ADAPTER , создаваемым драйвером непрямого дисплея (IDD).

Существуют и более сложные сценарии, в которых один непрямой аппаратный ключ дисплея содержит несколько устройств plug and play. Например, решение для непрямого отображения может иметь несколько функций устройства PnP, таких как микрофон (аудиодрайвер) и камера (видеодрайвер). В таких ситуациях idD несет ответственность за создание одного объекта IDDCX_ADAPTER для нескольких объектов устройств UMDF, созданных для каждого устройства PnP. В этом сценарии драйверу необходимо учитывать следующее:

  • IDDCX_ADAPTER следует создавать только после успешного запуска всех устройств PnP, составляющих решение для непрямого отображения.
  • Драйвер должен передать один WDFDEVICE при создании адаптера, поэтому ему требуется логика, чтобы решить, какое устройство UMDF он будет передавать.
  • Если какое-либо из устройств, составляющих адаптер косвенного дисплея, имеет аппаратную ошибку, драйвер должен сообщить обо всех устройствах, составляющих адаптер, как об ошибке.

IDDCX_MONITOR

Этот объект представляет определенный монитор, подключенный к одному из соединителей на адаптере непрямого дисплея.

Драйвер создает объект монитора в двухэтапном процессе:

  • Сначала вызывается обратный вызов IddCxMonitorCreate для создания объекта IDDCX_MONITOR .
  • Затем он вызывает обратный вызов IddCxMonitorArrival , чтобы завершить поступление монитора.

При отключении монитора драйвер вызывает обратный вызов IddCxMonitorDeparture , чтобы сообщить, что монитор отключен, что приводит к уничтожению объекта IDDCX_MONITOR . Даже если тот же монитор не подключен и повторно подключен, необходимо снова вызвать последовательность IddCxMonitorDeparture/IddCxMonitorArrival .

IDDCX_MONITOR является дочерним для объекта IDDCX_ADAPTER.

IDDCX_SWAPCHAIN

Этот объект представляет цепочку буферов , которая предоставляет изображения рабочего стола для отображения на подключенном мониторе. Цепочка буферов имеет несколько буферов, что позволяет ОС создавать следующий образ рабочего стола в одном буфере, пока IDD обращается к другому буферу. IDDCX_SWAPCHAIN является дочерним элементом IDDCX_MONITOR поэтому в любое время для данного монитора будет назначена только одна цепочка буферов.

ОС создает и уничтожает объекты IDDCX_SWAPCHAIN , а также назначает или отменяет назначение их мониторам с помощью вызовов EvtIddCxMonitorAssignSwapChain и EvtIddCxMonitorUnassignSwapChain Ddi.

IDDCX_OPMCTX

Этот объект представляет активный контекст диспетчера выходных данных (OPM) из одного контекста OPM приложения, который приложение может использовать для управления защитой выходных данных на одном мониторе. Несколько контекстов OPM могут быть активны на заданном мониторе одновременно. ОС вызывает драйвер для создания и уничтожения контекстов OPM с помощью вызовов DDI EvtIddCxMonitorOPMCreateProtectedOutput и EvtIddCxMonitorOPMDeprotectedOutput .