5

さまざまな USB インターフェイス (COMM エミュレーション、HID キーボード、HID POS など) を処理できるバーコード スキャナー デバイスをいくつか持っています。 HID キーボードまたは HID POS かどうかを判断できるようにします。

Win32 C++ を使用して、できれば組み込みの Windows HID ライブラリ (hidsdi.h) を使用してこれを判断する方法はありますか?

4

3 に答える 3

3

HidD_GetHidGuidを使用して、デバイスの一意の GUID を取得できます。デバイス インターフェイス GUID は、各デバイス/アプリケーション ソフトウェア ベンダー、Microsoft、またはサード パーティが適切と判断した場合に定義されます。場合によっては、GUID が公開されて一般に知られており、標準インターフェイスである場合もありますが、そうでない場合もあります。

Microsoft のUSBView ユーティリティを使用して、USB ツリーを参照するか、レジストリを調べて、デバイスの GUID が見つかるかどうかを確認することもできます。デバイスがqueryこれをサポートしている場合、構成データが存在しない場合、または汎用デバイス以外のデバイス自体が明らかにならない場合は、デバイスの種類を決定する必要があります。

GUID には、デバイス クラスとデバイス インターフェイスの 2 種類があります。デバイスは、1 つのクラスの一部にしかなれません。残念ながら、デバイス クラスとデバイス インターフェイスの GUID が同じ場合があり、開発者を混乱させます。WinXP DDK では、GUID の定義を混乱させないようにするための標準が作成されました。

この以前の SO の質問も参照してください: Use RegisterDeviceNotification() for ALL USB devices.

于 2010-01-18T14:28:01.973 に答える
1

可能なHIDガイドのリストは次のとおりです:http://msdn.microsoft.com/en-us/library/ms791134.aspxそしてRobotoが提案したようにHidD_GetHidGuidを使用します

于 2010-01-18T14:36:37.820 に答える
1

HidP_ 関数を使用して、hid レポート機能を確認する必要があります。HIDPOS デバイスによって提供される機能 (使用法) を調べ、HidD_GetPreparsedData()、HidP_GetCaps()、HidP_GetValueCaps(および/または ..ButtonCaps など) を使用してそれらの使用法が存在するかどうかを確認します。例を探すのに適した場所は、Jan Axelson のページです。使用法が存在する場合は、POS デバイスを取得しています。そうでない場合は、キーボードである必要があります (デバイスが接続されていることを確認したと仮定します)。

于 2010-02-14T15:51:33.187 に答える