Windows 8和单元调制解调器的COM端口信息

我们有一台使用在Windows 8embedded式设备上运行的Sierra MC7354调制解调器的设备。 我遇到的问题是设备pipe理器将显示调制解调器的COM端口,但在我们的embedded式XP系统上运行的代码和运行Windows 7的开发笔记本电脑无法在我们的8embedded式版本上运行。

我们目前正在使用WMI来search调制解调器。 用于WMI查询的名称空间是“root \ CimV2”,ClassName是“Win32_POTSModem”。 当我们使用“Win32_NetworkAdaptor”的ClassName时,我们看到调制解调器。 在查找“Win32_PnPEntity”时,我们还会看到三个comports中的两个,而不是我们需要发送“AT”命令到调制解调器的com端口。 我们的软件已经从pipe理CMD窗口运行,应该避免许可问题。

SerialPort.GetPortNames中列出了所需的comport。 由于其他串行硬件会因为发送查询而受到负面影响,所以我们无法将AT命令发送到每个端口以查找调制解调器。

这是一个简单的testing应用程序,Windows 8embedded式返回0调制解调器和15networking适配器,其中我的笔记本电脑返回15调制解调器和43networking适配器:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Management; namespace wmiModemTest { class Program { static void Main(string[] args) { Modem(); Network(); } static void Modem() { //create a management scope object ManagementScope scope = new ManagementScope("\\\\.\\ROOT\\cimv2"); //create object query ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_POTSModem"); //create object searcher ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query); //get a collection of WMI objects ManagementObjectCollection queryCollection = searcher.Get(); Console.WriteLine("Number of Win32_POTSModem returned: {0}", queryCollection.Count); //enumerate the collection. foreach (ManagementObject m in queryCollection) { // access properties of the WMI object Console.WriteLine("Description : {0}", m["Description"]); } } static void Network() { //create a management scope object ManagementScope scope = new ManagementScope("\\\\.\\ROOT\\cimv2"); //create object query ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_NetworkAdapter"); //create object searcher ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query); //get a collection of WMI objects ManagementObjectCollection queryCollection = searcher.Get(); Console.WriteLine("Number of Win32_NetworkAdapter returned: {0}", queryCollection.Count); //enumerate the collection. foreach (ManagementObject m in queryCollection) { // access properties of the WMI object Console.WriteLine("Description : {0}", m["Description"]); } } } } 

有谁知道如何收集调制解调器的WMI信息或设备pipe理器如何获取信息?