远程驱动程序可以调用 IddCxAdapterDisplayConfigUpdate2,以允许客户端告诉服务器如何更新监视器配置。
语法
HRESULT IddCxAdapterDisplayConfigUpdate2(
IDDCX_ADAPTER AdapterObject,
const IDARG_IN_ADAPTERDISPLAYCONFIGUPDATE2 *pInArgs
);
参数
AdapterObject
[in]为显示配置指定的远程适配器的 IDDCX_ADAPTER 对象。
pInArgs
[in]指向包含函数输入参数的 IDARG_IN_ADAPTERDISPLAYCONFIGUPDATE2 结构的指针。
返回值
IddCxAdapterDisplayConfigUpdate2 成功后返回STATUS_SUCCESS;否则,它将返回适当的错误代码。
言论
远程间接显示驱动程序可以调用 IddCxAdapterDisplayConfigUpdate2 来设置作系统应用于特定监视器的模式、色度和其他值。 只有远程驱动程序能够调用此函数。
有关 HDR 支持的详细信息,请参阅 IddCx 版本 1.10 更新。
IDDCX_DISPLAYCONFIGPATH2 结构定义的方式不是所有信息都必须在每个调用中提供。 例如,如果颜色模式不是 HDR 或 WCG,或者 IddCxAdapterDisplayConfigUpdate2,则某些路径可能无法提供着色数据,仅当不需要布局更改时,才能更新 SDR 白级别。
控制模式(为路径设置 IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID 标志)有一些额外的规则和说明:
- 如果任何路径 IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID 设置,则提供的所有路径都必须设置它
- 在所有路径上提供 IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID 时,路径列表中不存在的任何当前活动路径都将变为非活动状态
- 如果仅设置非IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID 标志,则只需提供要更新的路径
- 根据指定的颜色模式,路径可能需要其他数据。 下表指示必须设置哪些附加标志:
| 颜色模式 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MONITOR_COLORIMETRY_VALID | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MONITOR_SDRWHITELEVEL_VALID |
|---|---|---|
| 特别 提款 权 | 不 | 不 |
| SDRWCG | 是的 | 不 |
| HDR | 是的 | 是的 |
第一次调用与后续调用 IddCxAdapterDisplayConfigUpdate2
IddCxAdapterDisplayConfigUpdate2 调用中首次包含路径时的要求与后续时间不同。 下表概述了这些要求。
| 路径字段 | 在路径的初始调用中是必需的 | 可以在初始调用后更新 | Windows 客户端如何获取信息 |
|---|---|---|---|
| 模式 | 是的 | 是的 | QueryDisplayConfig 将提供客户端显示配置,并在显示配置更改时发送 WM_DISPLAYCHANGE;AdvancedColorInfo.CurrentAdvancedColorKind 将提供颜色模式 |
| 比例因子 | 是的 | 是的 | 驱动程序可以使用用于 IddCxAdapterDisplayConfigUpdate |
| 物理大小 | 如果未传递 EDID,则为 “是” | 不 | 如果传递了 EDID,则不需要 |
| 比色法 | 对于非 SDR 颜色模式是 | 是的 | 来自相应 AdvancedColorInfo 字段的大多数字段 |
| SDR 白色级别 | 对于 HDR 颜色模式,默认值为 80 nits | 是的 | AdvancedColorInfo.SdrWhiteLevelInNits,请参阅 在 HDR/SDR 上 显示高级颜色的 DirectX,了解详细信息 |
在 Windows 11 版本 22H2 9 月更新上运行时的行为差异
由于基础作系统功能,在 Windows 11 版本 22H2 9 月更新上运行时请求 HDR 和 WCG 颜色模式的驱动程序的支持与在 2024 年发布的 Windows 平台版本上运行略有不同。 驱动程序可以使用 IddCxGetVersion 函数来确定它们正在运行的 OS。 下表描述了驱动程序可以请求哪些颜色模式,具体取决于以前提供给 OS 的监视器描述符:
| Edid 类型 | 22H2 9 月更新可能的颜色模式 | 2024 年可能的颜色模式中的平台版本 |
|---|---|---|
| 没有 | SDR、HDR | SDR、SDRWCG、HDR |
| 特别 提款 权 | SDR、SDRWCG | SDR、SDRWCG |
| HDR | SDR、HDR | SDR、SDRWCG、HDR |
例子
后续 IddCxAdapterDisplayConfigUpdate2 调用中包含的路径的一些示例。 在每个方案开始时,远程会话配置了以下路径:
| 监控 | 分辨率 | 桌面位置 | 颜色模式 |
|---|---|---|---|
| 1 | 1920x1080 @ 30Hz | 0,0 | 特别 提款 权 |
| 2 | 1024x768 @ 30Hz | 1024,0 | SDRWCG |
| 3 | 3840x2160 @ 30Hz | 0,1848 | HDR |
方案 1 - 将监视器 3 的桌面位置更改为监视器 1 的左侧
| 监控 | 标志 | 详 |
|---|---|---|
| 1 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | 对当前模式数据没有更改 |
| 2 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | 对当前模式数据没有更改 |
| 3 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | 将桌面位置更改为 -3840,0 |
方案 2 - 将监视器 2 从 SDRWCG 更改为 SDR
| 监控 | 标志 | 详 |
|---|---|---|
| 1 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | 对当前模式数据没有更改 |
| 2 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | 设置新颜色模式 |
| 3 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | 对当前模式数据没有更改 |
方案 3 - 将监视器 1 从 SDR 更改为 HDR
| 监控 | 标志 | 详 |
|---|---|---|
| 1 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID、IDDCX_DISPLAYCONFIGPATH2_FLAGS_MONITOR_COLORIMETRY_VALID、IDDCX_DISPLAYCONFIGPATH2_FLAGS_MONITOR_SDRWHITELEVEL_VALID | 设置新的颜色模式、色度和 SDR 白色级别 |
| 2 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | 对当前模式数据没有更改 |
| 3 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | 对当前模式数据没有更改 |
方案 4 - 更改监视器 2 的规模系数
| 监控 | 标志 | 详 |
|---|---|---|
| 2 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MONITOR_SCALE_FACTOR_VALID | 设置新的缩放因子 |
方案 5 - 更改监视器 2 的规模系数和监视器 3 的桌面位置,以保留监视器 1
| 监控 | 标志 | 详 |
|---|---|---|
| 1 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | 对当前模式数据没有更改 |
| 2 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID,IDDCX_DISPLAYCONFIGPATH2_FLAGS_MONITOR_SCALE_FACTOR_VALID | 不更改当前模式数据,设置新的缩放因子 |
| 3 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | 将桌面位置更改为 -3840,0 |
方案 6 – 从当前配置中删除监视器 2
| 监控 | 标志 | 详 |
|---|---|---|
| 1 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | 对当前模式数据没有更改 |
| 3 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | 对当前模式数据没有更改 |
要求
| 要求 | 价值 |
|---|---|
| 最低支持的客户端 | Windows 11 版本 22H2 9 月更新(IddCx 版本 1.10) |
| 标头 | iddcx.h |