IddCx 对象

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

创建 IDD 对象的顺序为:

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

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

IDDCX_ADAPTER

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

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

处理多功能设备

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

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

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

IDDCX_MONITOR

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

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

拔下监视器时,驱动程序会调用 IddCxMonitorDeparture 回调来报告监视器已拔出,这会导致 销毁IDDCX_MONITOR 对象。 即使取消插入同一监视器,然后重新连接,也需要再次调用 IddCxMonitorDeparture/IddCxMonitorArrival 序列。

IDDCX_MONITORIDDCX_ADAPTER 对象的子级。

IDDCX_SWAPCHAIN

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

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

IDDCX_OPMCTX

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