c# - Win32_PnPEntity 为不同的硬件返回相同的 ClassGuid

标签 c# usb guid detect

我有一些 C# 代码扫描即插即用设备,然后通过匹配 VID 和 PID 过滤出 2 个 USB 设备(称它们为 dev1 和 dev2)。
现在,dev1 直接连接到我的笔记本电脑的 USB 端口,而 dev2 连接到 USB 集线器,它连接到我的坞站,它连接到与 dev1 不同的笔记本电脑 USB 端口。
Dev1 和 Dev2 是不同的硬件,因此两者的 VID+PID 不同。我的脚本确实检测到 2 个具有正确(和不同)VID+PID 的不同硬件。
但是,两个硬件的 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 相同时它也是相同的。

关于c# - Win32_PnPEntity 为不同的硬件返回相同的 ClassGuid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57090047/

相关文章:

C#抽象函数可以实现吗?

android - USB 设备未显示在 Titanium Studio 中

c# - 将 GridView 中 HiddenField 的值设置为新的 GUID

java - 如何获取USB设备是连接在USB3.0还是USB2.0口

usb - 如何在非零端点(libusb)上发送 USB 控制事务?

mysql - MySQL 中的 UUID/UUID 主键

sql-server - 更改现有表上的聚簇键 - SQL Server 2008

c# - 如何将 Entity Framework (代码优先)与动态创建的连接字符串和单文件数据库一起使用?

当类未完全初始化时抛出 C# 异常

C# 在全行业流行还是非典型?