C# Win32_p为不同硬件返回相同的ClassGuid
我对即插即用设备进行了一些C#代码扫描,然后通过匹配VID和PID筛选出2个USB设备(称为dev1和dev2)。C# Win32_p为不同硬件返回相同的ClassGuid,c#,usb,guid,detect,C#,Usb,Guid,Detect,我对即插即用设备进行了一些C#代码扫描,然后通过匹配VID和PID筛选出2个USB设备(称为dev1和dev2)。 现在,dev1直接连接到我笔记本电脑的USB端口,而dev2连接到USB集线器,该集线器连接到我的扩展底座,该集线器连接到与dev1不同的笔记本电脑USB端口。 Dev1和Dev2是不同的硬件,因此两者的VID+PID不同。我的脚本使用正确的(和不同的)VID+PID检测2个不同的硬件。 但是,两个硬件的GUID相同。这怎么可能呢?它们不应该总是不同的吗 以下是我如何提取GUID和
现在,dev1直接连接到我笔记本电脑的USB端口,而dev2连接到USB集线器,该集线器连接到我的扩展底座,该集线器连接到与dev1不同的笔记本电脑USB端口。
Dev1和Dev2是不同的硬件,因此两者的VID+PID不同。我的脚本使用正确的(和不同的)VID+PID检测2个不同的硬件。
但是,两个硬件的GUID相同。这怎么可能呢?它们不应该总是不同的吗 以下是我如何提取GUID和VID+PID的信息:
ManagementObjectCollection collection;
using (var searcher = new ManagementObjectSearcher(@"Select * From Win32_PnPEntity"))
collection = searcher.Get();
foreach (var device in collection)
{
string deviceIdValue = (string)device.GetPropertyValue("DeviceID"); // Provides VID and PID
string guidValue = (string)device.GetPropertyValue("ClassGuid"); // Provide the GUID
...
}
这是因为ClassGuid不是对象标识符,而是类标识符 如果您签出PnPClass属性,您会注意到当ClassGuid相同时,它是相同的。请选中此项。它列出了所有的ClassGuid类型。
ClassGuid不是一个硬件,而是硬件所指的类的类型。
例如,根据参考,两个不同类型的USB硬件都将具有相同的类GUID{36FC9E60-C465-11CF-8056-4453540000} 那么,您将如何分离两个不同的设备?DeviceId是唯一的。它继承自CIM_LogicalDevice,是唯一标识符: