簡體   English   中英

C#如何從多個連接相同的USB設備中找出特定的USB設備?

[英]C# How to find out particular USB device from multiple connected same USB device?

我有2台Logitech網絡攝像頭設備(c920)。 我想將這2台設備分配到IN-Camera和OUT-Camera,因為我需要IN和OUT用戶的交易。

現在,當我將它連接到PC時。 VID,PID是相同的,因為OEM也一樣。

那么每次插入PC時或者PC因任何原因重新啟動后,我怎樣才能找到2台設備。

所以我正在為這個USB設備尋找一些獨特的USB描述符。

需要幫助。

以下代碼可能有助於訪問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);
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM