使用网络监视器工具
网络监视器工具(NetMon.exe)是基于 Windows 的存档应用程序,可用于查看来自 WPD 组件的跟踪。 从 Windows 8 开始,该工具已替换 WpdMon.exe。
安装和配置NetMon.exe
若要安装和配置网络监视器工具,请完成以下步骤。
下载并安装 NetMon.exe。
下载并安装 Windows 驱动程序工具包。
在开发计算机上安装 WPD 分析程序,方法是使用管理员权限启动Powershell.exe实例并运行以下命令序列。
- PowerShell -ExecutionPolicy RemoteSigned
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 驱动程序工具包中。
使用“工具/选项”对话框配置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
创建命令文件后,从提升的命令会话在 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 传输,然后弹出。
- 传输级日志记录不会在数据阶段记录实际数据。 检查在 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