我的c#应用程序必须使用多个相同的USB MIDI接口,这些接口全部来自同一制造商。
在设备管理器中,所有设备都显示相同的驱动程序名称/ CLSID - 只有PNPDeviceID不同。当我列出所有MIDI输入/输出(使用MIDI-dot-net)时,它们显示如下:
不幸的是,对于同一设备,这些名称并不总是相同。设备1的端口有时显示为“ACME-MIDI:端口1”,有时显示为“1-ACME:端口1”(例如,它们会在重新启动后更改)。
我尝试使用不同的方法来查找名称属于哪个设备(SetupDi,WMI,Win32_PnPSignedDriver,...),但我得到设备ID OR 它报告的端口名称,但是我无法使用设备ID或驱动程序键找到报告的MIDI端口名称(ACME-MIDI:端口n)。
有什么建议吗?
更新
我仍然在寻找一种解决方案来列出给定端口上MIDI接口的输入/输出端口(例如使用Windows API)。看起来这很棘手,这就是我为此开始赏金的原因。
答案 0 :(得分:0)
不幸的是,单独使用MIDI API时无法区分设备。你必须依靠他们的名字。幸运的是,虽然设备命令可以更改,但根据我的经验,这通常不会在重启时发生。但是,正如您所见,它可以。
我过去在自己的软件中通过提示用户按键或移动设备上的控制旋钮来区分它们来处理此问题。