使用WMI查询的SerialPorts列表与devicemanager不同?

Ale*_*exS 10 wmi

我的设备管理器中列出了以下串口:

  • COM3
  • COM4(BT)
  • COM5(BT)
  • COM6(GlobeTrotter MO67xx - 控制接口)
  • COM7(GlobeTrotter MO67xx - GPS控制接口)
  • COM8(GlobeTrotter MO67xx - GPS数据接口)
  • COM9(GlobeTrotter MO67xx - 诊断接口)
  • COM11(USB串口)
  • COM12(USB串口)
  • COM45(SUNIX COM端口)
  • COM46(SUNIX COM端口)

所述SUNIX COM端口经由内部PCI卡连接.的USB串行端口通过USB(FDTI芯片)的连接GLOBETROTTER端口是从经由USB连接的设备周游世界.此调制解调器还有一个调制解调器,一个USB设备和一个网络设备.

所以我有几个不同的串口来源.

我想要做的就是使用WMI获取包含所有端口的列表.

对于我的测试,我使用的是WMI Code Creator

测试1:

root\CIMV2; 查询:SELECT * FROM Win32_SerialPort仅返回以下串口:

  • COM3
  • COM4
  • COM5

测试2:

root\WMI; 查询:SELECT * FROM MSSerial_PortName仅返回以下串口:

  • COM3
  • COM11
  • COM12
  • COM45
  • COM45

如何获得完整的串口列表?

Ale*_*exS 6

我找到了解决方案。

以下查询(root\CIMV2)获取请求的结果:

SELECT * FROM Win32_PnPEntity WHERE ClassGuid="{4d36e978-e325-11ce-bfc1-08002be10318}"
Run Code Online (Sandbox Code Playgroud)

更新资料

这个答案现在已经很老了。当我问它时,我仍然必须考虑WinXP,并且正在使用Windows7。由于我不再处理串行端口,因此无法提供有关该问题的任何新信息。当时,该解决方案报告了devicemanager显示的所有端口。但是我知道列出串行端口并不是那么容易,所以这个答案可能在所有情况下都不正确。

  • 我发现这是不够的。我在SELECT * FROM Win32_PnPEntity WHERE Name LIKE'%COM%'方面非常幸运。 (3认同)