我有一些 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/