Microsoft Message Analyzer(MMA)は、Windows用の無償ネットワーク解析ツールですが、USBデバイスの解析にも利用できます。例えば、あるUSBデバイスをWindowsに接続した時のエニュメレーションプロセスの詳細が知りたい場合などにMMAが利用できます。久しぶりに使ってみると、微妙にキャプチャ方法が変わっていて戸惑ったので、手順をまとめておきます。USBデバイスの解析は、次の4ステップで行えます。
1. MMAのインストール
2. MMAの起動
3. キャプチャ設定
4. USBデバイスの解析
(Microsoft Message Analyzerの配布は終了したようです。[Microsoft Message Analyzer – Retirement Notice ])
1. MMAのインストール
"windows message analyzer"で検索すると、Microsoft社のダウンロードページが見つかります。そこからMessageAnalyzer.msiまたはMessageAnalyzer64.msiをダウンロードしてWindowsにインストールします。サポートされているOSはWindows7とWindows8/8.1です。
2. MMAの起動
  | 
| MMAを管理者として実行する | 
 MMAを管理者として実行します。管理者として実行しないとUSBデバイスのキャプチャでエラーになります。
  | 
| MMA起動直後 | 
3. キャプチャ設定
File->New Session->Live Traceを選択します。
  | 
| 新しいSessionの作成 | 
 New Sessionウィンドウが立ち上がるので、Trace Scenario:Select a trace scenarioのプルダウンメニューからUSB2またはUSB3を選択します(プルダウンメニューの内容表示に少し時間がかかる場合もあるようです)。ここではUSB2を選択しています。USB3はWindows8.xのみサポートされているようです。
  | 
| Trace Scenarioの選択 | 
USB2を選択したらStartボタンを押します。
  | 
| キャプチャ開始 | 
キャプチャが始まりますが、画面の表示をわかりやすく設定したいので、Stopボタンでキャプチャを停止します。
  | 
| ストップボタンで停止 | 
 
Add Columnsを押してField Chooserを表示します。
  | 
| Field Chooserの表示 | 
Field ChooserのGlobal PropertiesからUsbDeviceを見つけて、右クリックで表示されるAdd As Columnを選択します。
  | 
| Field ChooserでUsbDeviceを追加 | 
UsbDeviceというカラムが追加されるので、カラムの"UsbDevice"という部分を右クリックして表示されるGroupを選択します。
  | 
| UsbDeviceのGroup表示 | 
これでトレースがUSBデバイス単位で表示されるようになり、解析が楽になります。
  | 
| USBデバイス単位の表示 | 
4. USBデバイスの解析
Restartボタンを押すとキャプチャが始まります。あるデバイスのエニュメレーションプロセスを観測したい場合は、最初にRestartボタンを押して、その後でUSBデバイスをWindowsに接続します。
例えば、一般的なUSBフラッシュメモリを接続すると、次のように表示されます。USBフラッシュメモリのVIDやPIDの対応は、デバイスマネージャーなどで事前に調べておく必要があります。
  | 
| USBフラッシュメモリのエニュメレーション | 
このように、
- USBアドレスは6に設定された
 
- GET_DESCRIPTOR(Device)が実行された
 
- GET_DESCRIPTOR(Configuration)が実行された
 
ことなどが、時系列で確認できます。データの詳細が知りたい場合は、その行を選択するとDetails部分に表示されます。例えばGet Full Device Descriptorを選択すると、実際にUSBデバイスから取得したデスクリプタの値がDetails部分に表示されます。
  | 
| GET_DESCRIPTOR(Device)の詳細 |