视频:调试 UMDF 驱动程序

本主题包含 Abhishek Ram 的一系列视频,演示如何 (UMDF) 驱动程序调试 User-Mode 驱动程序框架。

观看视频后,你将熟悉 UMDF 调试器扩展,并了解如何在基本调试方案中使用它们。

虽然视频演示了在较旧版本的 Windows 上调试 UMDF 版本 1 驱动程序,但你仍然可以将相同的技术用于在当前版本的 Windows 上运行的 UMDF 版本 2 驱动程序。

注意 此视频介绍 Wudfext.dll 中的调试器扩展命令,这些命令仅用于调试 UMDF 版本 1 驱动程序。 若要从 UMDF 版本 2.0 开始调试 UMDF 驱动程序,必须改用 Wdfkd.dll 调试器扩展库。 Wudfext.dll 中的所有扩展的 Wdfkd.dll 中都有等效项。 有关详细信息,请参阅 Wudfext.dll中的调试器扩展摘要 Wdfkd.dll中的调试器扩展摘要

有关调试 UMDF 的详细信息,请参阅 调试 WDF 驱动程序中列出的主题。

先决条件

若要充分利用此内容,应具备 UMDF 和 Windows 调试工具的工作知识。 由于每个会话都基于上一个会话,因此建议按列出的顺序查看这些演示。

基础知识和设置

讨论 WDK 示例和 OSR USB-FX2 学习工具包的使用。

在此视频中,你将了解 UMDF 调试基础知识,包括准备测试计算机、使用 Devcon 工具安装 UMDF Echo 示例驱动程序、使用 WdfVerifier 标识托管给定 UMDF 驱动程序的主机进程,以及使用 WdfVerifier 及时将主机进程附加到调试器以调试初始化代码。 此视频还演示了如何在任务管理器中列出正在运行的主机进程,以及如何在 设备管理器 中查看正在运行的驱动程序。

使用调试器扩展检查对象层次结构

在本部分中,你将了解如何开始调试 UMDF 驱动程序。 该视频介绍如何设置 OSR USB-FX2 驱动程序示例和应用程序示例,以便应用的三个实例向驱动程序发送读取、写入和设备 I/O 控制请求。 你将看到请求如何首先流向反射器,然后流向用户模式驱动程序主机进程。 此视频介绍 FX2 驱动程序示例的 WDF 对象层次结构,并讨论如何使用以下 UMDF 调试器扩展遍历 UMDF 对象层次结构:

对于 UMDF 2,请参阅 Wdfkd.dll中的调试器扩展摘要 ,例如 !wdfkd.wdfumdevstacks

访问框架 USB 对象

在这里,你将了解如何检查驱动程序的框架 USB 对象。 为此,你将在 WDF 对象层次结构中导航,以访问 USB 管道对象、USB 接口对象和 USB I/O 目标对象。

I/O 请求和队列

在本视频中,你将使用调试器检查驱动程序的框架 I/O 请求对象和框架队列对象。

文件对象和回调对象

在本部分中,你将了解如何检查框架文件对象以及驱动程序的回调对象。

跟踪 UMDF 驱动程序发送的 I/O 请求

在这里,你将了解如何使用应用验证程序工具来帮助你进行调试。 你还将了解如何调试驱动程序初始化代码,以及如何跟踪 UMDF 驱动程序发送到以下内核堆栈的请求。

驱动程序未完成 I/O 请求

在最后一个视频中,你将调查 UMDF 驱动程序未完成它收到的请求的情况,并了解框架的对象跟踪和引用跟踪功能。