IddCx 对象

IddCx (间接显示驱动程序类 eXtension) 使用可扩展 UMDF 对象模型来表示间接显示设备的组件。 UMDF 对象模型允许将特定于驱动程序的存储与每个 IddCx (,因此 UMDF) 对象。 有关详细信息 ,请参阅 UMDF 对象模型。

创建 IDD 对象的顺序为:

  • 驱动程序首先创建一个 IDDCX_ADAPTER 对象。
  • 然后,驱动程序 创建一IDDCX_MONITOR 对象。
  • 创建IDDCX_ADAPTERIDDCX_MONITOR对象后,OS 会创建IDDCX_SWAPCHAIN IDDCX_OPMCTX对象并将其发送到驱动程序。

以下部分提供有关这些对象的更多详细信息。

IDDCX_ADAPTER

此对象表示驱动程序在两个阶段进程中创建的单个逻辑显示适配器:

IDD 模型没有显式销毁适配器回调。 成功完成适配器初始化序列后,适配器将有效,直到初始化时传递的 UMDF 设备停止。 创建适配器时,驱动程序提供有关间接显示适配器的静态适配器信息。

处理多功能设备

在最简单的情况下,即插即用子系统为附加的间接显示设备创建的 UMDF 设备对象与间接显示驱动程序 IDD) 创建的 IDDCX_ADAPTER (对象之间存在一对一映射。

在一个间接显示适配器包含多个即插即用设备的情况下,可能会存在更复杂的情况。 例如,间接显示解决方案可能有多个 PnP 设备功能,例如麦克风 (音频驱动程序) 相机 (驱动程序) 。 在这种情况下,IDD 负责为每个 PnP IDDCX_ADAPTER多个 UMDF 设备对象创建单个对象。 在此方案中,驱动程序需要考虑以下事项:

  • 只有在 IDDCX_ADAPTER 间接显示解决方案的所有 PnP 设备都成功启动后,才应创建此应用。
  • 驱动程序在创建适配器时必须传递单个 WDFDEVICE ,因此它需要逻辑来决定它将传递哪个 UMDF 设备。
  • 如果作为间接显示适配器的任何设备出现硬件错误,驱动程序应报告适配器的所有设备为错误。

IDDCX_MONITOR

此对象表示连接到间接显示适配器上的某个连接器的特定监视器。

驱动程序在两个阶段过程中创建监视对象:

当监视器被拔下时,驱动程序将调用 IddCxMonitorDeparture 回调来报告监视器已拔下,这将导致IDDCX_MONITOR对象被销毁。 即使同一监视器未接通电源,然后重新连接,也需要再次调用 IddCxMonitorDepartureIddCxMonitorAureval/ 序列。

IDDCX_MONITOR 是对象 IDDCX_ADAPTER的子 级。

IDDCX_SWAPCHAIN

此对象表示 一个交换 链,它将提供要显示在连接的监视器上的桌面图像。 交换链具有多个缓冲区,使 OS 在 IDD 访问另一个缓冲区时,在一个缓冲区中编写下一个桌面映像。 该 IDDCX_SWAPCHAIN 是该监视器的子 IDDCX_MONITOR 因此,在任意时间都只有一个分配给给定监视器的交换链。

OS 使用 EvtIddCxMonitorAssignSwapChainEvtIddCxMonitorUnassignSwapChain Ddi 调用创建和销毁 IDDCX_SWAPCHAIN 对象并将其分配/取消分配给监视器。

IDDCX_OPMCTX

此对象表示来自单个应用程序 OPM 上下文 (OPM) 上下文的活动输出保护管理器,应用程序可以使用该上下文控制单个监视器上的输出保护。 多个 OPM 上下文可以同时在给定监视器上处于活动状态。 OS 调用驱动程序以使用驱动程序的 EvtIddCxMonitorOPMCreateProtectedOutputEvtIddCxMonitorOPMDestroyProtectedOutput DDI 调用来创建和销毁 OPM 上下文。