it-swarm-ja.com

USbルートハブとUSBコンポジットデバイスの違いは何ですか?

コンピューターに接続されている現在のすべてのUSBデバイスのVIDおよびPIDをフェッチする必要があるアプリケーションを開発しています。

しかし、コンピュータに接続されているヘッドフォンのVIDとPID番号を取得しています。マウスとキーボードを入手できません。

私のコードは次のように機能します:-

static List<USBDeviceInfo> GetUSBDevices()
    {
        List<USBDeviceInfo> devices = new List<USBDeviceInfo>();

        ManagementObjectCollection collection;
        using (var searcher = new ManagementObjectSearcher(@"Select * From Win32_USBHub"))
            collection = searcher.Get();

        foreach (var device in collection)
        {
            devices.Add(new USBDeviceInfo(
            (string)device.GetPropertyValue("DeviceID"),
            (string)device.GetPropertyValue("PNPDeviceID"),
            (string)device.GetPropertyValue("Description")
            ));
        }

        collection.Dispose();
        return devices;
    }

メインクラス

static void Main(string[] args)
    {
       var usbDevices = GetUSBDevices();
       foreach (var usbDevice in usbDevices)
       {
        Console.WriteLine("Device ID: {0}, PNP Device ID: {1}, Description: {2}",
         usbDevice.DeviceID, usbDevice.PnpDeviceID, usbDevice.Description);
       }
      Console.Read();
     }

ヘッドフォンの場合はSBコンポジットデバイスとして説明を取得しますが、コンピュータに接続されている他のデバイスの場合はSBルートハブとして説明を取得します==

ヘッドフォンだけのVIDとPIDだけを取得している理由がわかりません

提案してください

前もって感謝します。!!

1
RL89

ハブは、他のデバイスが接続されているデバイスです。ルートハブは、マザーボード上のUSBコントローラーを表します。

複合デバイスは、複数のインターフェイスを持つデバイスです。ヘッドフォンには、ミキサーコントロール用とオーディオキャプチャ用の2つのインターフェイスがあります。

通常のUSBデバイスはWin32_USBHubとしてリストされていないため、Dependentエントリを調べすぎています。例については、 WMIを使用したUSBデバイス情報の取得 を参照してください。

3
CL.

私はこの質問のコーディング部分をカバーしていません-そのOT SUの場合。とにかくコーディングできません

本当の問題は、あなたが間違った場所を見ているかもしれないということです

まず、デバイスマネージャを見てください。

これが私のものです。あまり面白くない部分を暗くして、役に立つものを指摘しました enter image description here

私のゲーミングマウスはUSB複合デバイスです。2つの仮想デバイスで構成されています(この場合、私が想定しているのはUSBヘッドセットです。それ以外の場合はまったく表示されません)。したがって、HIDの下、キーボードの下、マウスおよびその他のポインティングデバイスAMDの下のUSBコントローラーとして3か所に表示されます。

私のキーボードは、退屈でセクシーではないロジクールギアであるため、HIDとキーボードの下にのみ表示されます。 USBコントローラーの下では表示されるべきではありません。

要するに?コードを見直して、Windowsがハードウェアを分類する方法について少し学ぶことができます。

0
Journeyman Geek