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

间接显示驱动程序 (IDD) 是 UMDF 驱动程序,因此 UMDF 调试文档(例如 确定 UMDF 驱动程序加载失败的原因或 UMDF 设备无法启动)是一个很好的起点。注意本文使用windbg进行调试。

注册表控件

Indirect Display Driver Class eXtension (IccDx) 具有一些可用于帮助调试 IDD 的注册表设置。 所有注册表值都位于 HKLM\System\CurrentControlSet\Control\GraphicsDrivers 注册表项下。

值名称 详细信息
TerminateIndirectOnStall 如果监视器在帧可用后 10 秒内未处理帧,则零值将禁用终止驱动程序的监视器。 任何其他值都将使监视器保持启用状态。
IddCxDebugCtrl 启用 IddCx 的不同调试方面的位字段。 请参阅下表。
IddCxDebugCtrl 值
IddCxDebugCtrl 中的位 含义
0x0001 当 IddCx 检测到错误时中断调试器
0x0002 加载 IddCx 时中断调试器
0x0004 卸载 IddCx 时中断调试器
0x0008 调用 IddCx DriverEntry 时中断调试器
0x0010 调用驱动程序绑定时中断调试器
0x0020 调用驱动程序启动时中断调试器
0x0040 调用驱动程序取消绑定时中断调试器
0x0080 禁用 DDI 监视器,该监视器终止驱动程序在 DDI 调用中花费的时间过长
0x0100 未使用
0x0200 启用调试覆盖,请参阅下文
0x0400 在框架中的脏凹槽上覆盖彩色 alpha 框;需要设置0x0200
0x0800 将 pref 统计信息叠加到帧中
0x2000 IddCx 将查询每个帧的捕获帧注册表值;需要设置0x0200

若要运行任何覆盖函数,必须使用 D3D11_CREATE_DEVICE_BGRA_SUPPORT 标志创建由驱动程序创建并传递给 IddCxSwapChainSetDevice 的 Direct3D 设备。

IddCx WPP 跟踪

Iddcx 使用 WPP 基础结构 来记录调试信息。 WPP 信息可以捕获到文件中,当此捕获正在进行时,它可以显示在内核调试器中。

捕获 IddCx WPP 跟踪

可通过多种方式启用 WPP 跟踪。 一种便捷方法是在 logman.exe 程序中使用 生成。 如果将以下行复制到批处理文件并从提升的命令提示符运行,则会将 IddCx WPP 跟踪收集到 IddCx.etl 文件中。

复制代码
@echo off  
echo Starting WPP tracing....
logman create trace IddCx -o IddCx.etl -ets -ow -mode sequential -p  {D92BCB52-FA78-406F-A9A5-2037509FADEA} 0x4f4 0xFF
echo Tracing enabled
pause
echo Stopping WPP tracing....
logman -stop IddCx -ets
相关推荐
KL's pig/猪头/爱心/猪头12 小时前
写一个rv1106的led驱动1-整体架构
linux·驱动开发
进击大厂的小白13 小时前
68.range属性
驱动开发
全栈技术负责人14 小时前
AI-DLC 项目代码与流程分析文档【初始项目分析】
人工智能·驱动开发
Hey小孩2 天前
[个人总结] LDD3:3.字符驱动 - scull(4)
linux·驱动开发
春日见2 天前
控制算法:PP(纯跟踪)算法
linux·人工智能·驱动开发·算法·机器学习
一路往蓝-Anbo3 天前
第五篇:硬件接口的生死劫 —— GPIO 唤醒与测量陷阱
c语言·驱动开发·stm32·单片机·嵌入式硬件
春日见3 天前
控制算法:PID算法
linux·运维·服务器·人工智能·驱动开发·算法·机器人
A-花开堪折3 天前
Qemu-NUC980(十一):SPI Controller
linux·arm开发·驱动开发·嵌入式硬件
yuanmenghao3 天前
自动驾驶中间件iceoryx - 同步与通知机制(一)
开发语言·网络·驱动开发·中间件·自动驾驶
欢乐熊嵌入式编程3 天前
嵌入式 LCD 驱动开发全流程详解
驱动开发·嵌入式开发·嵌入式学习·嵌入式如何快速入门