Windowsドライバーを持っているデバイスにLinuxドライバーを書き込もうとしています(ここで説明した場合と同様ですが、デバイスが異なります)
Linux側の通信にはLibusbを使用し、USBスニファーとしてSourceUSBを使用しています(Windowsマシン上)。これで、コントロールとバルクを適切に複製したと思いますが、LinuxログをWindowsログに対して実際にテストすることはできません。VM上でUbuntu12.04を実行しています。
だから私の質問は:
- マルチプラットフォームのロガーはありますか?これにより、ログ比較プロセスが本当に簡素化される可能性があります。
- USBデバイスをVMに接続すると、WindowsでVMドライバーを取得します。このデバイスをスニッフィングすると、デバイスが認識しているものが正確にわかりますよね?つまり、これは私が嗅ぎたい場所ですか?
編集:私は自分のアプリケーションをWindows上でコンパイルしました(libusbはクロスプラットフォームです-とても良い仕事をしてくれたlibusb開発者に大いに感謝します)そして私のアプリケーションは正しく動作しました。
Linuxでアプリケーションを実行しているときにVMドライバーをスニッフィングすると、USBへの要求がCONTROL_TRANSFERおよびBULK_OR_INTERRUPTではなくVENDOR_DEVICEとして表示されます。これはデバイスが「見る」ものであるため、私が正しく理解していれば、これは問題のようです。
だから今の私の問題は、なぜLinuxが私のリクエストをベンダーとして送信するのかということだと思います。
別の編集:問題は解決しました:
- VMドライバーをリッスンすると、間違った要求が発生しました(VMドライバーのトラフィックをリッスンしていましたが、USBLinuxドライバーのトラフィックをリッスンしていませんでした。
- Libusbは完全にマルチプラットフォームです。コードをWindowsでコンパイルするのに数分かかり、そこからログのデバッグと比較が非常に簡単になりました。