首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# -从USB设备获取最近一次已知的父设备属性详细信息

C# -从USB设备获取最近一次已知的父设备属性详细信息
EN

Stack Overflow用户
提问于 2021-10-16 20:52:37
回答 1查看 124关注 0票数 2

我想尝试用c#从windows10中的USB设备中读出最后一个已知的父母,它可以在设备管理器->设备属性->详细信息中看到。我在谷歌上搜索了很多,找到了许多解决方案来获取制造商等,但我无法检索到想要的信息。在我看到的微软网站上,Win32Pnp实体类只返回以下内容:https://i.stack.imgur.com/DCAT7.png

有没有其他方法可以读取最后一个已知的父代?

非常感谢??致以最好的问候,

戴夫

EN

Stack Overflow用户

回答已采纳

发布于 2021-10-17 07:03:18

到今天为止,“最后一个已知的父”属性键是没有文档记录的。它的名称是DEVPKEY_Device_LastKnownParent,值是{83DA6326-97A6-4088-9453-A1923F573B29} 10

Win32_PnPEntity有一个GetDeviceProperties method,您可以使用它的键名来读取任何属性。

因此,下面是一个示例控制台C#代码,它为系统中的所有设备转储它(以及友好的名称):

代码语言:javascript
运行
复制
foreach (var mo in new ManagementObjectSearcher(null, "SELECT * FROM Win32_PnPEntity").Get().OfType<ManagementObject>())
{
    // ask for 2 properties

    var args = new object[] { new string[] { "DEVPKEY_Device_FriendlyName", "DEVPKEY_Device_LastKnownParent" }, null };
    // or this works too using the PK's value formatted as string
    //var args = new object[] { new string[] { "DEVPKEY_Device_FriendlyName", "{83DA6326-97A6-4088-9453-A1923F573B29} 10" }, null };

    // call Win32_PnPEntity.GetDeviceProperties
    mo.InvokeMethod("GetDeviceProperties", args);

    var mbos = (ManagementBaseObject[])args[1]; // one mbo for each device property key

    var name = mbos[0].Properties.OfType<PropertyData>().FirstOrDefault(p => p.Name == "Data")?.Value;
    if (name != null)
    {
        Console.WriteLine(name);

        var parent = mbos[1].Properties.OfType<PropertyData>().FirstOrDefault(p => p.Name == "Data")?.Value;
        Console.WriteLine(" " + parent);
    }
}
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69599467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档