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
相关推荐
VernonJsn12 小时前
visual studio 2022的windows驱动开发
ide·驱动开发·visual studio
嵌入式郑工19 小时前
RK3566 LubanCat 开发板 USB Gadget 配置完整复盘
linux·驱动开发·ubuntu
雾削木2 天前
树莓派 ESPHome 固件编译与烧录全攻略(解决超时与串口识别问题)
驱动开发
春日见3 天前
win11 分屏设置
java·开发语言·驱动开发·docker·单例模式·计算机外设
DarkAthena3 天前
【GaussDB】手动编译不同python版本的psycopg2驱动以适配airflow
驱动开发·python·gaussdb
松涛和鸣4 天前
DAY66 SPI Driver for ADXL345 Accelerometer
linux·网络·arm开发·数据库·驱动开发
嵌入式郑工4 天前
# RK3576 平台 RTC 时钟调试全过程
linux·驱动开发·ubuntu
GS8FG4 天前
针对Linux,RK3568平台下,I2C驱动的一点小小的领悟
linux·驱动开发
一路往蓝-Anbo4 天前
第 4 篇:策略模式 (Strategy) —— 算法的热插拔艺术
网络·驱动开发·stm32·嵌入式硬件·算法·系统架构·策略模式
A-花开堪折4 天前
RK3568 Android 11 驱动开发(五):串口驱动适配
驱动开发