2017-03-29 64 views
1

私は同じ2つのLogitech webcamデバイス(c920)を持っています。私はINとOUTのユーザーのトランザクションが必要なので、この2つのデバイスをIN-CameraとOUT-Cameraに割り当てる必要があります。C#同じUSBデバイスを複数接続して特定のUSBデバイスを見つける方法は?

今、私はそれをPCに接続します。 VID、PIDはOEMと同じなので同じです。

だから、2台のデバイスをPCに接続するたびに、または何らかの理由でPCを再起動した後に、どのようにして2台のデバイスを見つけることができますか?

私はこのUSBデバイスのユニークなUSBディスクリプタを探しています。

これについてのヘルプが必要です。

+0

'MAC Address'? – Smartis

+0

USBディスクリプタにMACプロパティはありません。 plsは私が同じものを見つけることができる場所を教えてくれます。 –

+0

[こちら](http://stackoverflow.com/questions/1554423/how-to-get-usb-hardware-id-using-device-id)は、C++でこれを行う関連記事です。 devcon.exeを使用して、すべてのハードウェアIDまたは選択したハードウェアIDを一覧表示できます。 –

答えて

0

次のコードは、お使いのUSBデバイスのハードウェアIDにアクセスするために役立つかもしれない:

using System; 
using System.Management; 

namespace akWmiDeviceDemo 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
     // inspired by: 
     // https://blogs.msdn.microsoft.com/powershell/2007/02/24/displaying-usb-devices-using-wmi/ 
      string strComputer = "."; 
      ManagementScope scope = new ManagementScope(@"\\" + strComputer + @"\root\cimv2"); 
      ObjectQuery queryUsbControllers = new ObjectQuery("Select * From Win32_USBControllerDevice"); 
      ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, queryUsbControllers); 
      ManagementObjectCollection usbControllers = searcher.Get(); 

      foreach (ManagementObject usbController in usbControllers) 
      { 
       string dependent = (string)usbController["Dependent"]; 
       string[] names = dependent.Replace("\"", "").Split(new char [] {'='}); 
       string strUsbControllerName = names[1]; 
       ObjectQuery queryUsbDevices = new ObjectQuery("Select * From Win32_PnPEntity Where DeviceID = '" + strUsbControllerName + "'"); 
       ManagementObjectSearcher deviceSearcher = new ManagementObjectSearcher(scope, queryUsbDevices); 
       ManagementObjectCollection usbDevices = deviceSearcher.Get(); 

       o(""); 
       o("USB controller = {0}", strUsbControllerName); 
       foreach (ManagementObject usbDevice in usbDevices) 
       { 
        o("description = {0}", usbDevice["Description"]); 
        o("PnPDeviceID = {0}", usbDevice["PnPDeviceID"]); 
       } 
      } 
     } 

     static void o(string format, params object[] args) 
     { 
      Console.WriteLine(format, args); 
     } 
    } 
} 
関連する問題