2017-03-29 2 views
1

동일한 Logitech 웹캠 장치 (c920)를 사용하고 있습니다. 내가 IN과 OUT 사용자의 트랜잭션이 필요하기 때문에 IN-Camera와 OUT-Camera에이 2 개의 장치를 할당하고 싶습니다.C# 여러 개의 연결된 USB 장치에서 특정 USB 장치를 찾는 방법은 무엇입니까?

이제 PC에 연결하면. VID, PID는 OEM 이후 동일합니다.

그래서 2 개의 장치가 PC에 연결될 때마다 또는 어떤 이유로 든 PC가 재시작 될 때마다 어떻게 찾을 수 있습니까?

그래서이 USB 장치에 대한 고유 한 USB 디스크립터를 찾고 있습니다.

이 문제에 대한 도움이 필요합니다.

+0

'MAC Address'를? – Smartis

+0

USB 디스크립터에는 MAC 속성이 없습니다. pls 내가 어디서 똑같은 찾을 수 있는지 말해. –

+0

[Here] (http://stackoverflow.com/questions/1554423/how-to-get-usb-hardware-id-using-device-id)는 C++을 통해 관련 게시물입니다. devcon.exe를 사용하여 전체 또는 선택된 하드웨어 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); 
     } 
    } 
} 
관련 문제