C# ManagementBaseObject和ManagementObject提供不同的设备ID
我正在处理一个C#应用程序。每当一个新的USB设备连接到电脑时,我必须触发一个事件,并需要获取设备连接的端口。我的代码是: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
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设备的端口