2014-01-28 3 views
1

특수한 공급 업체/제품 ID가있는 USB 장치를 사용할 수 있는지 알아야합니다 (액세스가 필요하지 않은지 확인하는 것이 좋습니다). libusb-win32를 사용할 때 이것은 내 경우에는 작동하지 않는 libusb 드라이버/필터 드라이버가 설치된 장치에서만 수행 할 수 있습니다.특정 USB 장치가 사용 가능한지 확인하십시오.

그래서 ... 사용 가능한 모든 USB 장치를 열거하고 VID/PID를 가져올 수 있습니까? 사용할 수있는 모든 예제 코드가 있습니까?

감사합니다.

답변

1

예를 들어 플러그가있는 USB 펜 드라이브의 SN을 얻는 등의 WMI 쿼리를 통해 보관할 수 있습니다 (보유하고있는 경우 일부 제공하지 않는 경우).

Check WMI Win32_PNPEntity class 또는 Win32_USBHub, Win32_USBControllerDevice 클래스.

편집 :

using System; 
using System.Management; 
using System.Windows.Forms; 

namespace WMISample 
{ 
    public class MyWMIQuery 
    { 
     public static void Main() 
     { 
      try 
      { 
       ManagementObjectSearcher searcher = 
        new ManagementObjectSearcher("root\\CIMV2", 
        "SELECT * FROM Win32_PnPEntity WHERE DeviceID = 'USB\\VID_8087&PID_0024\\5&38CA7A24&0&1'"); 

       foreach (ManagementObject queryObj in searcher.Get()) 
       { 
        Console.WriteLine("-----------------------------------"); 
        Console.WriteLine("Win32_PnPEntity instance"); 
        Console.WriteLine("-----------------------------------"); 
        Console.WriteLine("DeviceID: {0}", queryObj["DeviceID"]); 
       } 
      } 
      catch (ManagementException e) 
      { 
       MessageBox.Show("An error occurred while querying for WMI data: " + e.Message); 
      } 
     } 
    } 
} 
: 모든 장치를 열거 들어

, WHERE 절을 제거

0

장치를 열거하거나 특정 공급 업체/제품 ID가있는 드라이버/필터를 찾으려면 드라이버/필터가 설치되어 있어야합니다.

libusb-win32libusbx에 속하며, 이는 libusb으로 재 흡수되었다.

libusb.info을 선택하면 Linux, MacOSX 및 Windows 용 공식 libusb의 최신 포트를 찾을 수 있습니다. (별도의 libusb-win32를 사용할 필요가 없음).

배포판에는 공급 업체/제품 ID별로 연결된 모든 장치 (필터 또는 없음)를 나열하는 listdevs이라는 예제가 있습니다. 나는 Linux (Ubuntu 12.10)와 Win32 (Windows 7 Pro)를 모두 확인했으며 두 경우 모두 동일하게 작동합니다.