2011-01-26 13 views
2

少し読んだら、私の32ビットDelphiアプリケーションは、Windows 7や他の64ビットWindowsシステム上でlibusb 64ビットドライバを使用できなくなること、そして私と話すことができなくなることを心配しています。それらのシステム上のカスタムハードウェアデバイス。これは本当ですか?はいの場合、いくつかの回避策がありますか?私はこの写真の中で何かを逃していますか?Windows 64ビットでlibusbをDelphiで使用しますか?

答えて

4

WinUSBバックエンド(Windowsに含まれているMicrosoftドライバ)を含むlibusb 1.0では、 x86アプリケーション(C#アプリケーションで使用されるマネージC++ライブラリ)から。動作はx86プラットフォームとx64プラットフォームで同じです。

libusb 0.1(libusb-win32カーネルドライバを使用できる古いもの)については分かりませんが、1.0バージョンへのリンクポイントとしてはそれを使用していないようです。 (のWinUSBいくつかの制限がありますが、私は彼らに遭遇したことはありません)

+0

WinUSPの継ぎ目がWinXP SP2以降にのみ存在するWin2KとWinXPをSP1でサポートする必要があります。 WinUSBは同時に複数のアプリケーションと通信することはできません。これは現在のアプリケーションでは問題ではありませんが、これが必要な将来のハードウェアにとっては問題になるかもしれません。私は物事を2回習得したくありません。また、WinUSBはWindows以外のオペレーティングシステムには存在しませんが、現在問題はありませんが、今後は問題になります。このすべてが私には普通のlibusb 1.0になったり、CDCクラスのようなものに動いたりします。あなたの答えをありがとう。 – avra

+1

私の答えで指定されているように、あなたが実際にWinUSBドライバを使用しているのは、現在のコードがサポートしている唯一のものです(デバイスがHIDではなく、Linuxの場合を除き、なぜlibusb ?)。あなたの質問のリンクに「サポートされているシステムはWindows XPからすべてのWindowsプラットフォームです」と指定されているためです。 –

+1

@avra Windows 2000の64ビット版またはXP SP2がないため、これらのプラットフォームで64ビット版を心配するのはなぜですか? –

5

正確にはそうは思わないでしょうか? 64ビットドライバをお持ちの場合、64ビットシステムで使用できます(ドライバは正常に動作し、適切に署名されているため)。 32ビットおよび64ビットの両方のアプリケーションは、IoctlやMMFファイルなどのさまざまな通信メカニズムを介してドライバを制御できます。質問は、コードのすべての部分が正しく書かれている場合ですが、この質問は任意のライブラリと任意のplatofrmに適用されます

+0

32ビットアプリケーションから64ビットusblib dllを使用しているのは、そのような状況で他の種類のドライバアクセスが可能であるとは確信していません。だからこそ、私は自分の死を救うために援助を求めたのです。あなたの答えをありがとう。 – avra

+2

@avraには32ビットのDLLがありませんか?そうであれば、それを使ってください。 32ビットのユーザーモードDLLは、正しく書き込まれていれば、64ビットドライバと通信します。ドライバベースの製品はすべてこのように動作します。 –

+0

さて、物事は少し複雑になりました... 32ビットバージョンのDLL(libusb0_x​​86.dll)が32ビットのlibusb0.sysドライバを呼び出すlibusb 0.1のインカネーション(libusb-win32)を使用する必要があります。 64ビットバージョンのDLL(libusb0.dll)は、64ビットlibusb0.sysドライバを呼び出します。これはおそらく、32ビットDLLを呼び出すことは役に立たないことを意味します。私は誰かがこれを確認できるかどうか疑問に思います。このトピックに興味をお持ちいただきありがとうございます。 – avra

2

私はsucessfully libusb-win32を使用し1.0のlibusbいくつかの時点で

はのlibusb-win32のカーネルドライバをサポートしますが、特定の場合を除き、それは必要ありませんデルファイ32ビットアプリケーションを搭載した私のWin7 64ビットラップトップで。これまでのところ問題はありません。ドライバも署名されています(私の.infファイルのみが署名されていません)。

libusb-win32は、「古い」libusb APIを使用しています。

関連する問題