C#如何从多个连接的同一USB设备中找出特定的USB设备?

C#如何从多个连接的同一USB设备中找出特定的USB设备?,c#,usb,webcam-capture,usb-descriptor,C#,Usb,Webcam Capture,Usb Descriptor,我有相同的2台罗技网络摄像头设备(c920)。我想将这两个设备分配到相机内和相机外,因为我需要输入和输出用户的事务 现在,当我将其连接到PC时,VID、PID是相同的,因为OEM也是相同的 那么,我如何才能在每次将这两个设备插入电脑时或在电脑因任何原因重新启动后找到这两个设备呢 因此,我正在为这个USB设备寻找一些独特的USB描述符 需要相关帮助。以下代码可能有助于访问USB设备的硬件ID: using System; using System.Management; namespace ak

我有相同的2台罗技网络摄像头设备(c920)。我想将这两个设备分配到相机内和相机外,因为我需要输入和输出用户的事务

现在,当我将其连接到PC时,VID、PID是相同的,因为OEM也是相同的

那么,我如何才能在每次将这两个设备插入电脑时或在电脑因任何原因重新启动后找到这两个设备呢

因此,我正在为这个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);
        }
    }
}

以下代码可能有助于访问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);
        }
    }
}

MAC地址
?USB描述符中没有MAC属性。请告诉我在哪里可以找到同样的。是一个相关的帖子,它通过C++来完成。您可能希望使用devcon.exe列出所有或选定的硬件ID。
MAC地址
?USB描述符中没有MAC属性。请告诉我在哪里可以找到同样的。是一个相关的帖子,它通过C++来完成。您可能希望使用devcon.exe列出所有或选定的硬件ID。