C# ManagementBaseObject和ManagementObject提供不同的设备ID

C# ManagementBaseObject和ManagementObject提供不同的设备ID,c#,serial-port,C#,Serial Port,我正在处理一个C#应用程序。每当一个新的USB设备连接到电脑时,我必须触发一个事件,并需要获取设备连接的端口。我的代码是: private void DeviceInsertedEvent(object sender, EventArrivedEventArgs e) { ManagementBaseObject instance = (ManagementBaseObject)e.NewEvent["TargetInstance"]; string PNPDev

我正在处理一个C#应用程序。每当一个新的USB设备连接到电脑时,我必须触发一个事件,并需要获取设备连接的端口。我的代码是:

private void DeviceInsertedEvent(object sender, EventArrivedEventArgs e)
{
        ManagementBaseObject instance = (ManagementBaseObject)e.NewEvent["TargetInstance"];
        string PNPDeviceId = instance.Properties["PNPDeviceId"].Value.ToString();
        foreach (var property in instance.Properties)
        {
            Console.WriteLine(property.Name + " = " + property.Value);
        }

        ManagementObjectCollection ManObjReturn;
        ManagementObjectSearcher ManObjSearch;

        ManObjSearch = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity WHERE ClassGuid=\"{4d36e978-e325-11ce-bfc1-08002be10318}\"");

        ManObjReturn = ManObjSearch.Get();

        foreach (ManagementObject ManObj in ManObjReturn)
        {
            Console.WriteLine(ManObj["DeviceID"]?.ToString());
            Console.WriteLine(ManObj["PNPDeviceID"]?.ToString());
        }
}
问题是“ManagementBaseObject”不提供连接设备的端口的信息,要获取此信息,我必须使用“ManagementObject”,但我无法将连接的设备与“ManagementObjectCollection”提供的设备进行匹配,因为“DeviceID”或“PNPDeviceID”ManagementBaseObject和ManagementObject给出的值不同。为什么“DeviceID”在这两种情况下都不同?如何获取新连接的USB设备的端口