网络监视器工具(NetMon.exe)是基于 Windows 的存档应用程序,可用于查看来自 WPD 组件的跟踪。 网络监视器工具已替换 WpdMon.exe。
安装和配置 NetMon.exe
若要安装和配置网络监视器工具,请完成以下步骤:
下载并安装 NetMon.exe。
下载并安装 Windows 驱动程序工具包(WDK)。
在开发计算机上安装 WPD 分析程序,方法是使用管理员权限启动 Powershell.exe 实例并运行以下命令序列。
PowerShell -ExecutionPolicy 远程签名
cd C:\Program Files (x86)\Windows Kits\10\Tools\10.0.22621.0\x86\Network Monitor Parsers\usb
..\NplAutoProfile.ps1
cd ..\wpd
..\NplAutoProfile.ps1
WPD 分析器包含在 Windows 驱动程序工具包(WDK)中。
使用“工具/选项”对话框配置 NetMon.exe 选项:
- 在“ 常规 ”选项卡中,选择“ 框架摘要”框中的“使用固定宽度字体 ”。
- 在“颜色规则”选项卡中,选择“打开”,然后选择。
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
创建命令文件后,请从管理员模式命令提示符运行它。
如果使用示例命令文件的内容,则跟踪将存储在文件wpd_trace.etl 中。
查看踪迹
若要查看跟踪,请启动 NetMon.exe,选择 “文件/打开/捕获 ”菜单,然后打开收集的 wpd_trace.etl 文件。 打开跟踪文件时,NetMon.exe 会在各层次显示跟踪:
- WPDAPI – 使用 WPD 命令和响应显示来自 WPD API 级别的信息
- WPDMTP – 使用 MTP 命令和响应显示媒体传输协议 (MTP) 级别的信息
- 传输(WPDMTPUS 或 WPDMTPIP 或 WPDMTPBT) - 显示传输级别数据包
下图显示了 API 级别的 WPDAPI 请求。 该请求以到达传输的 MTP 请求的形式通过 WPDMTP 传输,然后弹出。
- 传输级日志记录不会在数据阶段记录实际数据。 检查在 GetDeviceInfo 或 SendObjectPropList 等命令期间发送或接收的数据集的 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