4

デバイスとこのデバイスのドライバーがあります。私がやりたいのは、サードパーティのアプリケーションと通信するためにUSBデバイスをモックするアプリケーションを作成することです。

具体的には、MicrosoftZuneを模倣したUSBデバイスをモックできるアプリケーションを構築しようとしています。アプリケーションがzuneデバイスとして登録し、クライアントと通信できるようにしたいと思います。接続されたデバイスが正当なzuneであることをソフトウェアに通知する呼び出しを判別するために、アプリケーションにいくつかのDLLを追加しましたが、これまでのところ、あまり運がありませんでした。

私はこのタイプの開発に不慣れです。つまり、ハードウェアデバイスを模倣しており、C /C++で記述されたdllのインポートの経験はあまりありません。Visual Studio 2010(.net 4.0)を使用してアプリを開発していますが、ハードウェアの模倣に向けて誰かが私に提供してくれる助けをいただければ幸いです。VisualStudioが直接参照することを拒否するデバイスドライバーを持っています。実際の物理デバイスも持っているので、デバイスマネージャーで使用されているドライバーを確認できます。

目標は次のとおりです

  1. アプリケーションはそれ自体をUSBデバイスとして登録し、仮想クローンドライブがDVDプレーヤーを模倣するのと同様の方法でMicrosoftZuneを模倣します。
  2. アプリケーションは、zuneクライアントによって有効なMicrosoftzuneとして認識されます。
  3. Zuneソフトウェアは、ハードウェアデバイス(同期など)と同じようにアプリケーションで動作します
4

2 に答える 2

3

デバイスシミュレーションフレームワークと呼ばれるものを見つけました。これはまさにあなたが必要としているものかもしれません。ただし、ソリューションを完成させるためにUSBがどのように機能するかについては、まだかなりの調査が必要です。そして、おそらくまだ通常はCまたはC++を使用して行われます。

ZuneはMTPZと呼ばれるMTPプロトコルの修正バージョンを使用していますが、デバイスシミュレーションフレームワークを使用して通常のMTPデバイスをシミュレートするこのサンプルを見つけました。これは、MTPデバイスシミュレータと呼ばれます。ソースコードが入手できるかどうかわかりません。

于 2011-04-29T20:39:08.617 に答える
2

zuneクライアントソフトウェアで使用されているDLLを独自のDLLに置き換えることはできますか?その場合、元のDLLをDLLでラップして、操作をインターセプトすることができます。

更新: DLL内の関数のシグネチャを見つけるには、エクスポートされた関数(およびその他の多くの情報)を一覧表示するDependencyWalkerツールを確認してください。代わりのDLLをCで記述したいと思うでしょう。


それ以外の場合は、USBデバイスを適切なエンドポイントに登録するドライバーを作成する必要があります。Windowsでこれを行う方法がわかりません-ドライバー側ではなく、ファームウェア側でのみUSBコーディングを行いました。USBドライバー開発入門など、WindowsUSBドライバーを作成するためのチュートリアルを使用できるはずです。

Zuneの詳細情報も役立つ場合があります。おそらく、このブログ投稿とその続編が役立つ可能性があります:Zune / USBプロトコルの内部:パート1

于 2011-04-29T20:01:44.393 に答える