共用方式為


使用網路監視器工具

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

安裝和設定 NetMon.exe

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

  1. 下載並安裝 NetMon.exe

  2. 下載並安裝 Windows 驅動程式套件 (WDK)。

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

    1. PowerShell -ExecutionPolicy 遠端簽署

    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

      WPD 剖析器包含在 Windows 驅動程式套件 (WDK) 中。

  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

建立命令檔案之後,請從系統管理員模式命令提示字元執行它。

如果您使用範例命令檔的內容,追蹤會儲存在檔案wpd_trace.etl 中。

檢視追蹤

若要檢視追蹤,請啟動 NetMon.exe,選取 [ 檔案/開啟/擷取 ] 功能表,然後開啟收集的 wpd_trace.etl 檔案。 當您開啟追蹤檔案時,NetMon.exe 顯示各種層次的追蹤:

  • WPDAPI – 使用 WPD 命令和回應顯示來自 WPD API 層級的資訊
  • WPDMTP – 使用 MTP 命令和回應顯示來自媒體傳輸通訊協定 (MTP) 層級的資訊
  • 傳輸 (WPDMTPUS 或 WPDMTPIP 或 WPDMTPBT) – 顯示傳輸層級封包

下圖顯示 API 層級的 WPDAPI 要求。 要求會以到達傳輸的 MTP 要求形式通過 WPDMTP,然後升起。

螢幕快照顯示「Frame Summary」視窗,以及不同追蹤層的標註。

  • 傳輸層級記錄不會在數據階段記錄實際數據。 檢查 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