使用网络监视器工具

网络监视器工具(NetMon.exe)是基于 Windows 的存档应用程序,可用于查看来自 WPD 组件的跟踪。 从 Windows 8 开始,该工具已替换 WpdMon.exe

安装和配置NetMon.exe

若要安装和配置网络监视器工具,请完成以下步骤。

  1. 下载并安装 NetMon.exe

  2. 下载并安装 Windows 驱动程序工具包

  3. 在开发计算机上安装 WPD 分析程序,方法是使用管理员权限启动Powershell.exe实例并运行以下命令序列。

    1. PowerShell -ExecutionPolicy RemoteSigned
    2. cd C:\Program Files (x86)\Windows Kits\10\Tools\10.0.22621.0\x86\Network Monitor Parsers\usb
    3. ..\NplAutoProfile.ps1
    4. cd ..\wpd
    5. ..\NplAutoProfile.ps1 注意 WPD 分析器包含在 Windows 驱动程序工具包中。
  4. 使用“工具/选项”对话框配置NetMon.exe选项:

    1. “常规”选项卡中,选择“框架摘要”框中的“使用固定宽度字体”。
    2. “颜色规则”选项卡中,选择“打开,然后选择。C:\Program Files (x86)\Windows Kits\10\Tools\10.0.22621.0\x86\Network Monitor Parsers\wpd\wpd.nmcr 选择“打开,后跟“确定”。

完成这些步骤后, NetMon.exe 即可检查 WPD 跟踪文件。 若要开始收集跟踪,请按照下一部分的说明收集跟踪。

收集跟踪

若要生成跟踪,需要创建命令脚本。 将以下内容复制到文本文件,并使用.cmd文件扩展名保存该文件。

echo off
@REM ---------------------------------------------------------------------------------------
@REM UNCOMMENT THE LOGMAN COMMANDS FOR THE FOLLOWING PROVIDERS AS REQUIRED
@REM Microsoft-Windows-WPD-API                 To log API traffic
@REM Microsoft-Windows-WPD-MTPClassDriver      To log MTP command, response and datasets
@REM Microsoft-Windows-WPD-MTPUS               To log USB traffic at WpdMtpUS layer
@REM Microsoft-Windows-WPD-MTPIP               To log IP traffic at WpdMtpIP layer
@REM Microsoft-Windows-WPD-MTPBT               To log BT traffic at WpdMtpBt layer
@REM Microsoft-Windows-USB-USBPORT             To log USB core layer traffic
@REM Microsoft-Windows-USB-USBHUB              To log USB core layer traffic
@REM ---------------------------------------------------------------------------------------

@REM Start Logging

logman start  -ets WPD -p Microsoft-Windows-WPD-API            -bs 100 -nb 128 640 -o wpd_trace.etl
logman update -ets WPD -p Microsoft-Windows-WPD-MTPClassDriver -bs 100 -nb 128 640
logman update -ets WPD -p Microsoft-Windows-WPD-MTPUS          -bs 100 -nb 128 640
logman update -ets WPD -p Microsoft-Windows-WPD-MTPIP          -bs 100 -nb 128 640
logman update -ets WPD -p Microsoft-Windows-WPD-MTPBT          -bs 100 -nb 128 640
logman update -ets WPD -p Microsoft-Windows-USB-USBPORT        -bs 100 -nb 128 640
logman update -ets WPD -p Microsoft-Windows-USB-USBHUB         -bs 100 -nb 128 640
logman update -ets WPD -p Microsoft-Windows-Kernel-IoTrace 0 2
echo.
echo Please run your scenario now and
pause

@REM Stop logging
logman stop -ets WPD

创建命令文件后,从提升的命令会话在 Windows 8 计算机上运行它。

如果使用示例命令文件的内容,则跟踪将存储在文件wpd_trace.etl 中。

查看跟踪

若要查看跟踪,请启动 NetMon.exe,选择“文件/打开/捕获”菜单,并打开上面收集的 wpd_trace.etl 文件。 打开跟踪文件时,会看到NetMon.exe在各个层显示跟踪:

  • WPDAPI – 使用 WPD 命令和响应显示来自 WPD API 级别的信息
  • WPDMTP – 使用 MTP 命令和响应显示来自 MTP 级别的信息
  • 传输(WPDMTPUS 或 WPDMTPIP 或 WPDMTPBT) - 显示传输级别数据包

下图显示了 API 级别的 WPDAPI 请求。 该请求以 MTP 请求的形式通过 WPDMTP 传输,然后弹出。

显示带有不同跟踪层标注的“帧摘要”窗口的屏幕截图。

  • 传输级日志记录不会在数据阶段记录实际数据。 检查在 GetDeviceInfoSendObjectPropList命令期间发送或接收的数据集的 WPDMTP 响应消息。
  • 如果在“帧摘要”窗口中选择 WPDMTP 响应行,则相应的项在“帧详细信息”窗口中展开。
  • 在“帧详细信息”窗口中选择“+”以进一步展开并浏览。 如果 MTP 操作具有数据短语,则从设备收到的数据集在 WPDMTP 响应项的 DataSetOfDataPhase 字段下可用。

查看跟踪。

  • 可以选择展开项,并查看 “帧详细信息 ”窗口显示 WPD/MTP 友好消息。 编写 WPD 分析器时遵循的约定是,你将能够在标头级别查看详细信息的摘要。 例如,在 GetServiceCapabilities 调用中, DataSetOfDataPhase 字段旁边显示该数据集中的格式数。
  • 可以在“框架摘要”窗口中删除“源”和“目标”列以提高清晰度
  • “框架详细信息”窗口中选择字段时,“十六进制详细信息”窗口中突出显示相应的值。

使用NetMon.exe进行筛选

网络监视器工具提供了多种筛选功能。

  • 若要仅显示 MTP 跟踪,请在“显示筛选器”窗口中输入 !wpdmtp,然后选择“应用”。

  • 若要筛选驱动程序返回错误的情况:

    • “显示筛选器”窗口中输入 wpderror != 0,然后选择“应用”。
  • 可以筛选给定方案的所有方法调用。 例如,以下筛选器将检索对 GetServiceProperties 的所有调用:

    WPDMTP。CorrespondingCommand.MTPOpcode == 0x9304

  • 同样,以下筛选器将检索相同的方法调用:

    WPDMTP。CorrespondingCommand.MTPOpcode == MTP_OPCODE_GETSERVICEPROPERTIES