使用網路監視器工具

網路監視器工具 (NetMon.exe) 是封存的 Windows 應用程式,可用來檢視來自 WPD 元件的追蹤。 從 Windows 8 開始,此工具已 取代WpdMon.exe

安裝和設定NetMon.exe

若要安裝和設定網路監視器工具,請完成下列步驟。

  1. 下載並安裝 NetMon.exe

  2. 下載並安裝 Windows 驅動程式套件

  3. 使用系統管理員許可權啟動 Powershell.exe 實例,並執行下列命令順序,在您的開發計算機上安裝 WPD 剖析器。

    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 注意 Windows 驅動程式套件中包含 WPD 剖析器。
  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,然後升起。

顯示 [框架摘要] 視窗的螢幕快照,其中包含不同追蹤圖層的圖說文字。

  • 傳輸層級記錄不會在數據階段記錄實際數據。 檢查 WPDMTP 回應訊息,以瞭解 GetDeviceInfoSendObjectPropList命令期間所傳送或接收的數據集。
  • 如果您在 [ 框架摘要 ] 視窗中選取 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