2016-08-25 10 views
0

私は1つのアプリケーションと通信するUSB​​デバイスに取り組んでいます。アプリケーションにもっと良いソフトウェアインターフェイスを提供するWindowsドライバが必要なようです。 (アプリケーション自体がWinUSB経由でデバイスに低レベルのコマンドを送信するのとは対照的に)DLL内でWinUSBを使用していますか?

DLL内からWinUSBを使用することはできますか? Choosing a driver model for developing a USB client driverはそれを具体的に扱っていません。

このような状況で、代わりにUMDFベースまたはKMDFベースのドライバ、またはWDMルーチンを呼び出すハイブリッドドライバを作成する必要があるのはなぜですか?

答えて

1

WinUSBを使用するのは、おそらく正しい方法です。あなたは間違いなくDLL内でWinUSBを使用することができます。一般に、別のDLLに関数を呼び出すDLLを書くことができます。また、そのことを防ぐwinusb.dllについて特別なことは何もありません。また、すでにlibusbやlibusbpなどの他のプロジェクトでも実行されています。これらのプロジェクトは、winusb.dllを使用するDLLにコンパイルされます。

私はまた、あなたのコードのクロスプラットフォームにすることをお勧めします:あなたのDLLから直接のWinUSBを呼び出して、その代わりに、このようなlibusblibusbpとしてUSB抽象化ライブラリを使用しないでください。 Windowsのみをサポートしたい場合でも、これらのライブラリはSetupAPIやWinUSBよりも使いやすく、開発時間を節約することができます。また、異なるオペレーティングシステムでコードを動作させたい場合は、時間を節約できます。

WinUSBでサポートされていないWindows USBスタックの高度な機能が必要な場合は、自分のUMDFまたはKMDFドライバをこのような状況で作成する唯一の理由があると思います。たとえば、デバイスを別のUSB構成に切り替える必要がある場合や、電源管理で扱いにくい場合や、複数のアプリケーションが同時にデバイスを使用できるようにする必要がある場合などです。いくつかのデータを前後に送信したいだけなら、WinUSBは良い選択です。

関連する問題