如何在 Netmon 中查看 USB ETW 跟踪

本文介绍如何使用 Netmon 查看事件跟踪文件。

安装 Netmon 并将其配置为与 USB ETW 文件一起使用(如 如何安装 Netmon 和 USB ETW 分析程序中所述)后,可以使用它检查跟踪文件。

打开 ETW 文件

若要在 Netmon 中查看跟踪文件,请在“开始”屏幕上键入“netmon”以打开 Netmon。 使用以下方法之一打开跟踪文件:

  • 在“ 文件 ”菜单上,单击“ 打开”,单击“ 捕获”,然后选择 .etl 文件。
  • 单击“ 打开捕获 ”按钮并选择 .etl 文件。
  • 按 Ctrl+O 并选择 .etl 文件。

事件跟踪由单个事件组成,每个事件都指示驱动程序堆栈中发生的情况。 每个事件都符合驱动程序堆栈定义的多种类型之一。

显示“Netmon”窗口的屏幕截图,其中在“帧摘要”中选择了一个事件。

观察事件是否在“ 帧摘要 ”窗格中列出。 上图显示了 USB 2.0 驱动程序堆栈的偶数。 请注意此窗格中的以下列:

  • 时间偏移量:事件的时间戳,指定为与日志开始时间的偏移量。
  • 协议名称:记录事件的驱动程序。 对于 USB 事件,驱动程序为 USB 集线器或 USB 端口。
  • 说明:事件的描述性名称。

在“ 帧摘要 ”窗格中选择一个事件。 Netmon 在“ 帧详细信息 ”和“ 十六进制详细信息 ”窗格中显示事件的详细信息。 在“ 帧详细信息 ”窗格中,展开项目以检查事件的详细信息。 有关使用 Netmon 检查 USB 跟踪文件的示例,请参阅 案例研究:使用 ETW 和 Netmon 对未知 USB 设备进行故障排除

USB 3.0 驱动程序堆栈的 USB ETW 分析程序的新列

USB 2.0 驱动程序堆栈中的重要事件类型也在 USB 3.0 驱动程序堆栈中定义。 但是,这些类型之间存在细微的差异。 例如,请考虑 USB 控件传输完成事件类型 (Description : USBPort:Complete URB_FUNCTION_CONTROL_TRANSFER_EX with Data) :

对于 USB 2.0 驱动程序堆栈事件类型,“ 帧详细信息 ”窗格显示 idVendor (也称为 USB VID) 和 idProduct (也称为 USB PID) 。 此图像显示了连接到 USB 2.0 主机控制器的 USB 2.0 设备的事件跟踪。

显示“Netmon”窗口的屏幕截图,其中包含“帧详细信息”窗格中连接到 US B 主机控制器的 US B 设备的事件跟踪。

对于 USB 3.0 驱动程序堆栈事件类型, “帧详细信息 ”窗格不包含 idVendor 或 idPid。 可通过向“ 帧摘要 ”窗格添加新列来获取该信息,如下图所示。

请注意以下新列:

  • USB 设备说明
  • USB Vid
  • USB Pid
  • USB 长度
  • USB 请求持续时间

microsoft 网络监视器。

(USB 2.0 和 USB 3.0) 的所有 USB 事件跟踪现在都会在每个 URB 完成时显示有关请求的详细信息。 请注意 “USB 长度”下的值,例如“255 中的 41”。 这些值指示完成时每个 URB 的实际传输长度,以及客户端驱动程序) 指定的原始 TransferBufferLength (总请求长度的上下文。 此外,还可以在“ USB 请求持续时间 ”列下查看 () 完成请求所花费的时间(以秒为单位)。

将筛选器添加到“显示筛选器”窗格

可以使用捕获筛选器来缩小特定方案的事件跟踪范围。 可以为 USB 2.0 和 USB 3.0 驱动程序堆栈中的事件跟踪编写新的筛选器:

USBIsError == 1      // Any error events from the USB drivers
USBIsDisconnect == 1 // Show when any device disconnected

可以筛选所有列。 若要创建筛选器,请右键单击单元格,然后选择“将”<列名>“添加到”显示筛选器”。 Netmon 基于其值和列名创建筛选器,并将其添加到 “显示筛选器 ”窗格下。