该系列文章适用于Win7之后的系统。
Connection and Configuring Display(CCD)是用来提供关于控制桌面显示的一系列API.
也可以用来让你自己的APP能够在Potrait桌面显示时能正确展示。
在Win7以前,不可能使用ChangeDisplaySettingEx来切换Clone模式。
CCD系列接口不使用GDI相关的概念,而是采用WDDM相关的概念,例如Adapter, Source, Target.
显示控制面板,快捷键,以及HDP管理器都是用CCD API。 OEM也可以采用CCD API来替代原有的Escape调用。
CCD 提供下面的功能:
- 根据当前连接的Display来枚举可用的Display Path。
- 通过一个函数调用来设置诸如Topology信息(Clone, extend等),分辨率,朝向,长宽比等信息。因为是一次调用,所以可以在设置所有的显示器时就能减少黑屏次数。
- 给Persistence database添加或更新配置。
- 应用Persistence database中的配置。
- 使用最好的mode选择逻辑来应用优化显示配置。
- 使用最好的Topology逻辑来给链接的Dsiplay来优化Topology。
- 可以强制开始或者停止输出。
- 允许OEM使用快捷键来使用Persistence database.
CCD API不包含以下任务,也不会兼容之前的Windows 2000 Display driver model。
- 用来替换之前HW厂商已经使用用来控制Desktop Display设置的一系列API和Escape。
- 给miniportdriver传递Private 数据。
- 提供一系列控制Monitor的API。
- 请求Monitor的能力,包括EDID,DDCCI等。
- 提供一个Context唯一的标识符来标识CCD从Persistence database中获取的settings.
- 虽然CCD API允许调用者set或get display,但是不能提供任何功能去枚举给定path中可能的Source mode。这些功能的API在WIn7之前已经存在了。
另外,使用CCD API来建立Desktop Display, 硬件厂商必须修改WDDM的moniport driver来支持CCD。更多的信息参考 CCD DDIs - Windows drivers | Microsoft Learn