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
相关推荐
沫璃染墨16 小时前
《从零入门Linux系统篇(五十八):线程篇·十一——线程安全与死锁详解:从可重入到多锁管理》
linux·服务器·开发语言·c++·驱动开发·安全·架构
ebiobiz17 小时前
Zig 工具链编译 STM32 开发指南
驱动开发·stm32·嵌入式硬件
sukalot18 小时前
Windows 驱动实例分析系列:libwdi 驱动分析 - 应用篇(一)
windows·驱动开发
Carl_奕然19 小时前
【智能体】Loop 的四种设计模式之:Event-Driven Loop(2026 最新版)
人工智能·驱动开发·python·设计模式
gwf2161 天前
Completion Queue(CQ)与中断处理:轮询、中断聚合与错误码 —— 面向AI集群的驱动级深度剖析
驱动开发·性能调优·pcie·rdma·ai集群·中断聚合·cq
kakakahahahaha2 天前
Windows鼠标失灵排查:Ctrl Alt Delete、Mouse Keys、USB控制器与驱动修复
windows·驱动开发·电脑·笔记本电脑·软件需求
傲世仙尊2 天前
TCP报头全解-序号确认应答与可靠性是一个准数
驱动开发·网络协议·tcp/ip
sukalot3 天前
Windows 驱动实例分析系列:libwdi 驱动分析 - libwdi 篇(五)
windows·驱动开发
沫璃染墨3 天前
《从零入门Linux系统篇(五十六):线程篇·九——生产者消费者模型:从条件变量到BlockingQueue实现》
linux·服务器·c++·驱动开发·设计模式·架构·系统架构
傲世仙尊3 天前
UDP底层与守护进程化-报头结构体skbuff指针移动与自成会话
驱动开发·网络协议·udp