使用網路監視器工具
網路監視器工具 (NetMon.exe) 是封存的 Windows 應用程式,可用來檢視來自 WPD 元件的追蹤。 從 Windows 8 開始,此工具已 取代WpdMon.exe。
安裝和設定NetMon.exe
若要安裝和設定網路監視器工具,請完成下列步驟。
下載並安裝 NetMon.exe。
下載並安裝 Windows 驅動程式套件。
使用系統管理員許可權啟動 Powershell.exe 實例,並執行下列命令順序,在您的開發計算機上安裝 WPD 剖析器。
- 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 注意 Windows 驅動程式套件中包含 WPD 剖析器。
使用 [工具/選項] 對話框設定 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,然後升起。
- 傳輸層級記錄不會在數據階段記錄實際數據。 檢查 WPDMTP 回應訊息,以瞭解 GetDeviceInfo 或 SendObjectPropList 等命令期間所傳送或接收的數據集。
- 如果您在 [ 框架摘要 ] 視窗中選取 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