次の方法で共有


ネットワーク モニター ツールの使用

ネットワーク モニター ツール (NetMon.exe) は、WPD コンポーネントからのトレースを表示するために使用できるアーカイブされた Windows ベースのアプリケーションです。 ネットワーク モニター ツールが WpdMon.exe置き換えられました。

NetMon.exe のインストールと構成

ネットワーク モニター ツールをインストールして構成するには、次の手順を実行します。

  1. NetMon.exeをダウンロードしてインストール します

  2. Windows Driver Kit (WDK) をダウンロードしてインストールします。

  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

      WPD パーサーは、Windows Driver Kit (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] を選択します。 [ 開く] を選択し、[ OK] を選択します。

これらの手順を完了すると、 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 を経由します。

さまざまなトレース レイヤーの吹き出しが表示された [フレームの概要] ウィンドウを示すスクリーンショット。

  • トランスポート レベルのログ記録では、データ フェーズ中に実際のデータはログに記録されません。 GetDeviceInfoSendObjectPropList などのコマンド中に送受信されたデータセットの WPDMTP 応答メッセージを調べます。
  • [フレームの概要] ウィンドウで WPDMTP 応答行を選択すると、[フレームの詳細] ウィンドウで対応する項目が展開されます。
  • [ フレームの詳細 ] ウィンドウで [+] を選択し、さらに展開して探索します。 MTP 操作にデータフェーズがある場合、デバイスから受信したデータセットは、WPDMTP 応答項目の DataSetOfDataPhase フィールドで使用できます。

トレースの表示中に [フレームの詳細] ウィンドウを示すスクリーンショット。

  • 項目を展開し、[ フレームの詳細 ] ウィンドウに WPD/MTP フレンドリ メッセージが表示されることを選択できます。 WPD パーサーを記述するときに従う規則は、ヘッダー レベルで詳細の概要を確認できることです。 たとえば、 GetServiceCapabilities 呼び出しでは、 DataSetOfDataPhase フィールドの横に、そのデータセット内の形式の数が表示されます。
  • [フレームの概要] ウィンドウで [ソース] 列と [変換先] 列を削除して、わかりやすくすることができます。
  • フレームの詳細 ウィンドウでフィールドを選択すると、16 進の詳細 ウィンドウで対応する値が強調表示されます。

NetMon.exe を使用したフィルター処理

ネットワーク モニター ツールには、いくつかのフィルター処理機能が用意されています。

  • MTP トレースのみを表示するには、[表示フィルター] ウィンドウに「!wpdmtp」と入力し、[適用] を選択します。

  • ドライバーがエラーを返した場合にフィルター処理するには:

    • 表示フィルター ウィンドウに「wpderror != 0」と入力し、[適用] を選択します。
  • 特定のシナリオのすべてのメソッド呼び出しをフィルター処理できます。 たとえば、次のフィルターは、GetServiceProperties へのすべての呼び出しを取得します。

    WPDMTP.CorrespondingCommand.MTPOpcode == 0x9304

  • 同様に、次のフィルターは同じメソッド呼び出しを取得します。

    WPDMTP.CorrespondingCommand.MTPOpcode == MTP_OPCODE_GETSERVICEPROPERTIES