問題タブ [setupapi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3179 参照

c# - HID デバイスの検索 C#

コンピューターに接続された USB デバイスに接続する必要があります。少し調べて、いくつかのサンプル プロジェクトを見つけましたが、これを機能させることはできません。すべてがうまく動作しますが、while 関数には入りません。SetupDiGetClassDevssetupapi.dll からなので、この関数をデバッグできません。デバイスが接続されているので、それは私の問題ではありません。hInfoSetサイズ = 8 も取得します。

0 投票する
1 に答える
3765 参照

c - SetupDiGetDeviceRegistryProperty:「システム コールに渡されるデータ領域が小さすぎます」エラー

SetupAPI を使用して Windows XP で USB デバイスを列挙するコードがあります。

以前は何年も機能していましたが、今でFALSESetupDiGetDeviceRegistryProperty、最後のエラーは「システムコールに渡されたデータ領域が小さすぎます」です。私の呼び出しパラメーターは、この関数のドキュメントに対応しているようです: http://msdn.microsoft.com/en-us/library/windows/hardware/ff551967(v=vs.85).aspx

何が問題なのですか?

0 投票する
1 に答える
534 参照

windows - Windows XP SetupAPI は、サービスからの非 WHQL 署名付き .INF のインストールを拒否します

私のサービスは、WHQL署名付き INF ファイルではなくSetupCopyOEMInf、Authenticode のインストールを呼び出しています。(0x800B0110)が返され、INF ファイルがインストールされていません。SetupCopyOEMInfCERT_E_WRONG_USAGE

0 投票する
1 に答える
450 参照

c# - SetupDiGetDeviceInterfaceDetail API を使用してベンダー ID と製品 ID を取得する方法

USB カードのベンダー ID と製品 ID を見つけようとしています。この目的のために、setupapi.dllを使用します。私のコードでは、SetupDiGetDeviceInterfaceDetail呼び出しを 2 回使用し、2 回目に関数はエラーなしで true を返しますが、その後何ができるかわかりません。

私のコード:

次のコードを試すと、結果は "-" です。

ベンダー ID と製品 ID を取得するにはどうすればよいですか?

0 投票する
0 に答える
843 参照

winapi - DIDEVICEINSTANCE の guidProduct フィールドはどのように生成されますか

DirectInput は、DIDEVICEINSTANCE の guidProduct フィールドの GUID をどのように生成しますか? ドキュメントには次のように書かれています。

guid製品

商品の一意の識別子。この識別子は、デバイスの製造元によって確立されます。

DirectInput を使用せずにジョイスティックの製品 GUID を取得または合成する方法を探しています。RawInput を使用してデバイス パスとクラス GUID を正常に取得しましたが、RawInput や SetupDi* 関数を使用して製品 GUID を取得する方法をまだ見つけていません。

MAKELONG(VID, PID) == guidProduct.Data1探しているうちに、私がやりたいことを実行する方法があることに希望を持てることに気付きました (結局のところ、DirectInput は何とかそれを実行します)。

質問:

  1. HID (特にジョイスティック) デバイスの製品 GUID を取得する API はありますか?
  2. そうでない場合、DirectInput がこのフィールドを合成する方法を知っている人はいますか? (最初のフィールドは VID と PID を組み合わせたものです。残りはどうですか?)

編集:

guidProduct フィールドをハックすることで、興味深い発見に出会いました。P880 USB ゲームパッドの製品 GUID の形式は次のとおりです。

最初の 4 バイトは、明らかにコントローラーの PID と VID です。GUID の最後の部分は、所有しているすべての HID コントローラーに共通です。しばらくすると、それが ASCII 文字であることがわかりました。翻訳は次のとおりです。

SDL2 ゲーム コントローラ データベースを使用してこれを確認したところ、保持されているようです。もちろん、これは bluetooth デバイス (OUYA コントローラーなど) をカバーしていません。これは今のところ小さな問題です。

Bluetoothデバイス用にguidProductがどのように構成されているか知っている人はいますか?

0 投票する
1 に答える
4961 参照

c# - デバイスパスを指定して USB_DEVICE_DESCRIPTOR を取得する方法

SetupAPI を使用して USB デバイスを列挙することができました。また、WDK から usbview アプリケーションを調べましたが、まだUSB_DEVICE_DESCRIPTORを取得する方法がわかりません。

  • WMI の使用は避けたいと思います。
  • DeviceIoControlは、サンプル アプリ usbview が使用するものですが、実際にはハブでデバイスを列挙している場合にのみ機能します。デバイス パス (または ID) を指定して親ハブ (およびポート) にアクセスできる場合、この方法は機能する可能性がありますが、これを行う方法も特定できませんでした。
  • 記述子を取得したいデバイスが混在しています。これらの一部は HID であり、一部は WinUsb.sys デバイスである可能性があります。それらが WinUsb デバイスの場合、 WinUsb_GetDescriptor を使用できます、HIDでは機能しません (そして、Id または Path...Interface クラスからそれらの違いを見分ける方法がわかりません)。
  • SetupDiGetDeviceRegistryPropertyを使用できますが、使用可能なプロパティのリストに製造元の文字列は表示されますが、ベンダー ID は表示されません。
  • デバイス パスまたはデバイス ID からこの値を解析できる可能性がありますが、それは一種のハックのようです。それはただ人々がすることですか?また、Manufacturer のような他のフィールドが必要な場合は、他のメソッドに行く必要があります。USB_DEVICE_DESCRIPTOR 全体を取得できれば、必要なものはすべて揃っていると思います。
  • LibUsb.Net は明らかに WinUsb デバイスのみをサポートしています。それが記述子を取得する方法です。
  • どうやら WinRT にはいくつかの新しい API があるため、Windows ストア アプリには記述子を取得する優れた方法があります。しかし、これは間違いなく Windows ストア アプリではありません。また、新しい API を使用する別の方法があるかどうかもわかりません。

誰かが私を正しい方向に向けることができますか? ハブから開始しないと、WinAPI からこの情報を適切な方法で取得することはできないのでしょうか?

0 投票する
1 に答える
1271 参照

c# - 障害のあるドライバーや不足しているドライバーをプログラムで検出する

私は、自分のシステムで動作するより良いドライバーをプログラムがインストールできるように、障害のあるドライバーまたは見つからないドライバーを検出する方法を見つけることを任されています。私が試みていることにはsetupapi.dll、レジストリから値を取得し、ドライバーに問題があることを知らせるフラグを見つけようとすることが含まれます。MSDN、「その他のデバイス」のクラス GUID が4d36e97e-e325-11ce-bfc1-08002be10318. ただし、これらのデバイスを列挙しようとすると、デバイス マネージャーの下にそのカテゴリのデバイスが表示されていても、何も得られません。このカテゴリのデバイスまたは一般的なドライバー エラーを特定する方法を提供できる別の Windows API はありますか? 私のコードは次のようになります:

また、特定のプロパティを取得するために使用しようとしましSetupDiGetDeviceRegistryPropertyたが、多くのデバイスではすべてのプロパティが存在するわけではありません。これに電話して返してもらいたいのですがSPDRP_INSTALL_STATE、この電話で実際の応答をまだ受け取っていません。