使用网络监视器工具 - Windows drivers

网络监视器工具(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