2017-05-06 99 views
1

我在c#中很新手,但不幸的是必须发现usb端口的VID和PID。获取WMI属性

ObjectQuery objectQuery = new ObjectQuery("SELECT * FROM Win32_PnPEntity WHERE ConfigManagerErrorCode = 0"); 
ManagementObjectSearcher comPortSearcher = new ManagementObjectSearcher(connectionScope, objectQuery); 

using (comPortSearcher) 
{ 
    string caption = null; 
    foreach (ManagementObject obj in comPortSearcher.Get()) 
    { 
     if (obj != null) 
     { 
      object captionObj = obj["Caption"]; 
      // Rest of code 
     } 
    } 
} 

我其实不知道这个关键字"Caption"来自哪里。我怎样才能知道在这个对象中隐藏了哪些键?我很不清楚。 如何获取其他这样的列表"Keys"

+0

用来检查'obj'变量调试器。你应该可以钻入其属性。 – Crowcoder

+0

不幸的是我没有成功 –

回答

1

此代码可以通过WMI访问不同的属性。具体而言,Win32_PnPEntity类别表示即插即用设备的属性。

查看更多MSDN上关于Win32_PnPEntity class和它的属性:

[Dynamic, Provider("CIMWin32"), UUID("{FE28FD98-C875-11d2-B352-00104BC97924}"), AMENDMENT] 
class Win32_PnPEntity : CIM_LogicalDevice 
{ 
    uint16 Availability; 
    string Caption; 
    string ClassGuid; 
    string CompatibleID[]; 
    uint32 ConfigManagerErrorCode; 
    /* Rest of properties... */ 
}; 

ManagementObjectSearcher是一个办法retrieve information of a WMI Class

+0

非常感谢。它已经整理了我的问题。我会在7分钟内接受它作为答案(相当有趣,为什么我不能这么做) –

+0

@PeterJ - 欢迎您:)并感谢您接受答案:)至于时间段:[为什么不能在提出问题后的第一个15分钟内,我接受了答案?](https://meta.stackoverflow.com/q/250132/6400526);) –