USBTraceは、USB 2.0のデバイスクラスで規定されている、多くのクラス固有の情報を表示する機能があります。
ログと情報ビュー中の、クラス固有のリクエストとディスクリプタの詳しいデコード情報を表示します。
クラスのデコードを有効にするには、対応するクラスデコーダ・プラグインDLL(以下の”クラスデコーダのインストール”のセクションを
参照)をダウンロードする必要があります。 現在サポートされているデバイスクラスは、次のリンクを参照してください。
http://www.sysnucleus.com/usbtrace_cd.html
下の図は、USBTraceでキャプチャされた、ハブクラスを示しています。
下の図は、情報ビューの、デコードされたクラスリクエストです。
クラスデコーダは、クラス固有のデスクリプタと関連データも、デコードして表示する事ができます。
下の図は、USBTraceビデオクラスデコーダを使って、クラス固有の情報を表示しているところです。
USBTraceクラスデコーダは、USBTraceのメインアプリケーションとは別に、インストールする必要があります。 クラスデコーダは、ZIP圧縮されたDLLとして配布されます。
マスストレージクラスデコーダ(プラグインdll)を使用してマスストレージデバイスクラスに属するUSBデバイスをモニタリングすることができます。 Bulk-Only転送プロトコルをサポートするマスストレージデバイスをモニタリング可能です。
Bulk-Onlyプロトコルのコマンドブロックラッパ (CBW) と コマンドステータスラッパ (CSW) の両方がデコード・表示可能です。
以下のコマンドブロック特定(サブクラスコードに基づく)がサポートされます:
以下のイメージは、USBトレースでデコード・表示されたSCSI問い合わせコマンドブロックを示しています。
HWAクラスデコーダ(プラグインdll)を使用してワイヤレスコントローラ/ワイヤレスUSBホストワイヤアダプタ(HWA)クラスに属するUSBデバイスがモニタリング可能です。このデコーダはWUSB、HWAクラス特定リクエストをキャプチャ、デコード、表示します。 以下のタイプのリクエストがデコード・表示されます:
ヒューマンインターフェイスデバイス(HID)クラスに属するUSBデバイスが、HIDクラスデコーダ(プラグインdll)を使用してモニタリング可能です。 HIDクラスの具体的なデコードされたリクエスト:
また、デコーダはインタラプトパイプを通してデバイスから運ばれる非同期データ(HIDレポート)をキャプチャ・表示します。
以下の画像はHIDマウスからUSBトレースを使用してキャプチャされたHIDレポートです:
Hubクラスデコーダ(プラグインdll)を使用してHubクラスに属するUSBデバイスをモニタリング可能です。 このデコーダは、特定USB IOCTLs内部Hubと同様にHubクラス特定のリクエストをモニタリングします。Hub記述子はデバイス情報ビューに表示されます。
デコードされるHubクラスリクエスト:
以下の内部USB(Hub特定)IOCTLsがモニタリングされます:
以下のイメージは、USBトレースでデコードされ、表示されるHub特定リクエストを示しています。
このクラスデコーダ(プラグインdll)を使用して、静止画像キャプチャデバイスクラスに属するUSBデバイスのモニタリングが可能です。
デコードされたクラス特定リクエスト:
また、このデコーダはデジタル静止画デバイスで使用されるPIMA 15740プロトコルをキャプチャ・表示します。 PIMA15740動作、応答、イベントがデコードされ、表示されます。
下の画像は、デジタルカメラからUSBトレースを使用してキャプチャされたPIMA 1570パケットです。
ビデオクラスデコーダ(プラグインdll)を使用してビデオクラスに属するUSBデバイスのモニタリングが可能です。 このカテゴリに入るデバイスとして、ウェブカム、デジタルカメラコーダ、アナログビデオコンバータ、アナログまたは デジタルテレビジョンチューナー、ビデオストリームをサポートする静止画カメラがあります。 USBビデオクラス特定リクエストとデータをキャプチャ、デコードし、表示します。 ビデオコントロール(VC)とビデオストリーム(VS)の両方をサポートします。USBビデオクラス規格のバージョン1.0と1.1をサポートします。
キャプチャされるリクエストの種類:
さらに、クラス特定リクエストのキャプチャで、ビデオデコーダはビデオと静止画 ペイロードデータ(バルクとアイソクロナス)もキャプチャします。
以下のイメージはUSBトレースでデコード、表示されたビデオリクエストパケットです。
ベンダークラスデコーダを使用して、ベンダー独自のUSBデバイスクラスに属するデバイス(クラスコード:0xFF)用に
カスタムデバイスクラスデコーダを書くことができます。
この機能を実行するには以下の2ステップを行ってください:
上記2つのDLLはUSBトレースのインストールディレクトリにコピーして使用してください。
こちらよりベンダー特定クラスデコーダをダウンロードすることができます。 VendorDecoder.dll をUSBトレースのインストールディレクトリに解凍して下さい。(例:\Program Files\USBTrace\)
以下の2つのエクスポートされた関数が実装されたウインドウズDLLを書きます。
テスト済みのカスタムデバイスクラスデコーダ・サンプルコードを是非ダウンロードしてご利用下さい。 このサンプルを編集して、任意のデバイスクラスデコーダを実装することができます。
BOOL GetReqName([IN] UCHAR bmRequestType, [IN] UCHAR bRequest, [IN] USHORT wValue, [IN] USHORT wIndex, [IN] PVOID pData, [IN] ULONG nDataLen, [OUT] PCHAR sReqName, [IN] USHORT reqNameLen);
この関数で、受けたリクエストの名前を返さなければなりません。(例:"SetPortDetails")名前はsReqName パラメータ内に収めます。 bmRequestType, bRequest, wValue, wIndexといったリクエスト詳細はUSB規格(セットアップパケット8バイト)の通りです。 リクエストデータとデータ幅(pData, nDataLen)も与えられます。reqNameLenはsReqNameバッファの幅を特定します。
提供するリクエスト名がログビューに表示されます。(USBトレースキャプチャデータリスト)
この関数でリクエスト情報の詳細を返さなければなりません。
BOOL GetReqInfo([IN] UCHAR bmRequestType, [IN] UCHAR bRequest, [IN] USHORT wValue, [IN] USHORT wIndex, [IN] BOOL in, [IN] PVOID pData, [IN] ULONG nDataLen, [OUT] PCHAR sInfoString, [IN][OUT] PUSHORT pInfoStringLen);
リクエスト情報の詳細は以下のフォーマットのsInfoString パラメータに書き込みます:
"<header>;<param1>=<value1>;<param2>=<value2>"
Example: "VENDOR_SEND_COMMAND;Command Code=0x21;Control=CT_NONE"
追加情報ビューに表示されます。
pInfoStringLen は、sInfoStringの幅を示します。 与えられたpInfoStringLenが十分でない場合は、 同じ変数で要求された幅を提供する関数は機能しません。
DLL名は vsdecoder.dllです。このDLLはvendordecoder.dllと共に、USBトレースのインストールディレクトリにコピーされる必要があります。 詳細は、サンプルDLLソースコードをご覧下さい。
HHD USBモニタとUSBTraceは、
どちらもUSBのモニタを行うソフトウェアですが、それぞれのソフトウェアは、以下のような違いがあります。
詳しい説明は、それぞれのソフトウェアのページをご参照ください。
![]() |
![]() |
|
|
どちらの製品も、それぞれ特徴のある製品ですので、用途に応じて使い分けてください。
また、どちらも試用期間がありますので、まずはそれぞれの機能をお試し下さい。