Network Monitor Tool の使用
ネットワーク モニター ツール (NetMon.exe) は、WPD コンポーネントからのトレースを表示するために使用できるアーカイブされた Windows ベースのアプリケーションです。 Windows 8 以降では、ツールは WpdMon.exe に置き換えられました。
NetMon.exe のインストールと構成
ネットワーク モニターの状態を設定するには、次の手順を実行します。
NetMon.exe をダウンロードしてインストールします。
Windows Driver Kit をダウンロードしてインストールします。
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 注 WPD パーサーは Windows Driver Kit に含まれています。
[ツール] / [オプション] ダイアログを使用して、NetMon.exe オプションを構成します。
- [全般] タブで、[フレーム サマリーで固定幅フォントを使用する] を選択します。
- [カラー ルール] タブで、[開く] を選択し、
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
コマンド ファイルを作成した後、管理者特権のコマンド セッションから 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 フィールドの横に、そのデータセット内の形式の数が表示されます。
- [フレームの概要] ウィンドウで [ソース] 列と [変換先] 列を削除して、わかりやすくすることができます。
- [フレームの詳細] ウィンドウでフィールドを選択すると、[16 進の詳細] ウィンドウで対応する値が強調表示されます。
NetMon.exe を使用したフィルター処理
ネットワーク モニター ツールには、いくつかのフィルター処理機能が用意されています。
MTP トレースのみを表示するには、[ディスプレイ フィルター] ウィンドウに「!wpdmtp」と入力し、[適用] を選択します。
ドライバーがエラーを返したケースをフィルター処理するには、次の手順に従います :
- [表示フィルター] ウィンドウに「wpderror != 0」と入力し、[適用] を選択します。
特定のシナリオのすべてのメソッド呼び出しをフィルター処理できます。 たとえば、次のフィルターは、GetServiceProperties へのすべての呼び出しを取得します。
WPDMTP.CorrespondingCommand.MTPOpcode == 0x9304
同様に、次のフィルターは同じメソッド呼び出しを取得します。
WPDMTP.CorrespondingCommand.MTPOpcode == MTP_OPCODE_GETSERVICEPROPERTIES