Win32_PnPEntity为不同的硬件返回相同的ClassGuid

问题描述 投票:1回答:2

我有一些C#代码扫描即插即用设备,然后通过匹配VID和PID过滤掉2个USB设备(分别称为dev1和dev2)。现在,dev1直接连接到笔记本电脑的USB端口,而dev2连接到USB集线器,该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
    ...
   }
c# usb guid detect
2个回答
2
投票

这是因为ClassGuid不是对象标识符,而是类标识符。

如果您检查PnPClass属性,则当ClassGuid相同时,您会注意到它是相同的。


1
投票

检查此link。它列出了所有的ClassGuid类型。ClassGuid不是紧跟一种硬件,而是硬件所指的类的类型。例如,两个USB类型的差异硬件都将具有相同的ClassGuid {36FC9E60-C465-11CF-8056-444553540000}。

© www.soinside.com 2019 - 2024. All rights reserved.