windows显示驱动开发-调试间接显示驱动程序(三)

复制代码
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\IddCxFrameCapture]
"CaptureCount"=dword:00000014
"TriggerUniqueness"=dword:00000001
间接显示屏幕捕获调试功能

从 Windows 内部版本 25164开始,IddCx 能够转储 IddCx 传递给驱动程序的桌面帧。 此功能可用于调试视觉问题。 它可以与调试覆盖(如着色脏框架区域)结合使用。

由于 IddCx 将在每个帧上查找帧捕获的调试注册表设置中的更改, 因此 IddCxDebugCtrl中有一个主控件值,用于控制 IddCx 是否将为每个帧检查捕获注册表值。 这可确保禁用时不会造成性能损失(当 OPM 接口对驱动程序处于活动状态时,将禁用此功能)。

控制捕获的注册表值

以下注册表值位于 HKLM\System\CurrentControlSet\Control\GraphicsDrivers\IddCxFrameCapture 中。 应在设置 IddCxDebugCtrl 值之前创建此注册表文件夹。

名称 缺少默认值 含义
TriggerUniqueness 0 调用每个 IddCx 交换链以获取新帧时,它将读取此值。 如果 TriggerUniqueness 为非零且不同于以前的读取值,则将读取以下值并启用帧捕获。
TargetMask 0xffff 位掩码:适配器上每个目标索引的一位,用于控制该目标的交换链是否应成为此捕获序列的一部分。
CaptureCount 10 每个 enabled-for-capture IddCx 交换链应捕获的帧数。
SkipFrames 0 要在每个捕获的帧之间跳过的帧数。
CaptureSessionID 0 将在其中启用帧捕获的会话。 值为零始终表示控制台会话。
ScaleFactor 100 控制用于确定捕获文件尺寸的比例系数,有效值 1-100
CaptureFolder c:\IddCxImages 将写入捕获文件的文件夹。 如果 c:\IddCxImages 文件夹不存在,则会创建该文件夹。

捕获参数按目标存储,这样捕获会话就可以跨给定目标上的模式更改。

如果在监视对象仍在从以前的捕获捕获中捕获帧时检测到新的非零 TriggerUniqueness 值,则会停止当前捕获并启动新触发的捕获。

使用 REG 文件控制帧捕获

REG 文件是控制帧捕获的好方法。 一个文件可以设置初始值,另一个文件可以更新 TriggerUniqueness

用于设置初始值的 REG 文件
复制代码
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers]
"IddCxDebugCtrl"=dword:2200

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\IddCxFrameCapture]
"TriggerUniqueness"=dword:0
用于更新 TriggerUniqueness 的 REG 文件
复制代码
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\IddCxFrameCapture]
"TriggerUniqueness"=dword:1
文件名和格式

捕获的帧采用 PNG 文件格式,文件名格式如下:

S<会话 ID,主机 >为零_Ad<ID 适配器 LUID > 的十六进制值_T<ID 目标 Idx > 的十六进制值_Frame<IDDCX_METADATA 中的帧数。 hhmmss >中 mmddyy format>Time 的 PresentationFrameNumber><<Date.png

下面是一些示例文件名:

  • S0_Ad8ade_T3_Frame2343_020422_173434.png
  • S0_Ad8ade_T3_Frame2344_020422_173434.png
  • S0_Ad8ade_T3_Frame2345_020422_173435.png
WPP 日志记录

对于启动的每个 捕获会话,将为从注册表中读取或默认设置的每个值记录 WPP 消息。

每次捕获帧并将其写入文件时,IddCx 都会添加一条 WPP 消息,其中包含图像文件的完整文件名。

示例捕获设置
从首次连接监视器时捕获帧

下面是捕获第一次插入任何监视器(后跟 REG 文件)的前 20 帧所需的注册表值。

注册表项 说明
CaptureCount 20 设置 20 帧,而不是默认 10 帧
TriggerUniqueness 1 任何非零值都将作为目标对象以零开头作为存储唯一性
在监视器处于活动状态时开始捕获

如果交换链在驱动程序获取每个帧时检查新的唯一性值,则应最后设置 TriggerUniqueness 条目,以确保按预期读取所有参数。 以下示例还将文件分辨率减半以节省空间,并将捕获文件写入 c:\frames 文件夹中。

注册表项 说明
CaptureCount 100 设置 100 帧,而不是默认的 10 帧
ScaleFactor 50 设置 50% 分辨率以节省空间
CaptureFolder c:\frames 设置输出文件夹
TriggerUniqueness 1 任何非零值都将作为目标对象以零开头作为存储唯一性工作
复制代码
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\IddCxFrameCapture]
"CaptureCount"=dword:00000014
"CaptureFolder"="c:\\frames"
"ScaleFactor"=dword:00000032
"TriggerUniqueness"=dword:00000001
从远程会话 3 中的第二个目标捕获 10 帧,每个捕获之间有 5 个帧

此捕获还使用调试覆盖来突出显示每个帧的脏区域。

注册表项 说明
IddCxDebugCtrl 还设置了位0x0400 0x0400启用脏区域突出显示,还需要0x2200位
CaptureSessionID 3 启用远程会话 3 中的捕获
TargetMask 0x2 位 1 对应于目标 Idx 1
SkipFrames 5 跳过每个捕获之间的 5 帧捕获
TriggerUniqueness 1 任何非零值都将作为目标对象以零开头作为存储唯一性
复制代码
Windows Registry Editor Version 5.00  

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers]  
"IddCxDebugCtrl"=dword:2600

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\IddCxFrameCapture]
"CaptureSessionID"=dword:00000003
"TargetMask"=dword:00000002
"SkipFrames"=dword:00000005    
"TriggerUniqueness"=dword:00000001
相关推荐
非凡ghost5 小时前
分区助手:Windows 磁盘管理的“瑞士军刀“,分区调整不再怕丢数据
服务器·windows·电脑·软件需求
木白CPP5 小时前
Linux 驱动UART子系统源码分析
linux·运维·服务器·驱动开发·嵌入式硬件·开源软件
淡海水9 小时前
01-07-运行时-GC深度剖析-内存分配回收与结构选择
jvm·windows·unity·gc
DAVIED911 小时前
llama.cpp 本地部署完全指南
windows·llama·wsl·llamacpp
云上飞4763696213 小时前
Windows WSL2 + Docker 环境下NVIDIA PhysicsNeMo 安装指南
windows·docker·physicsai·physicsnemo
weixin_66813 小时前
取消Windows 11 默认精简的鼠标右键文件夹菜单
windows·计算机外设
love530love14 小时前
彻底清理 Windows 右键“打开方式“中的重复/失效程序项(PyCharm 多版本残留实战 + 自动化脚本)
运维·人工智能·windows·pycharm·jetbrains·toolbox
王维同学1 天前
进程模块枚举、映像身份与线程启动地址关联
c++·windows·安全
x²+(y-√³x²)²=11 天前
Linux打包文件到Windows,文件/文件类型丢失
linux·运维·windows
Rudon滨海渔村1 天前
windows10如何删除多余的输入法 - 仅保留English+拼音
windows·输入法