如何处理多个相同的MIDI USB设备

我的c#应用程序必须使用多个相同的USB MIDI接口,这些接口都来自同一制造商。

在设备管理器中,所有设备都显示相同的驱动程序名称/ CLSID – 只有PNPDeviceID不同。 当我列出所有MIDI输入/输出(使用MIDI-dot-net)时,它们显示如下:

  • ACME-MIDI:端口1
  • 1- ACME-MIDI:端口1
  • 2- ACME-MIDI:端口1

不幸的是,对于同一设备,这些名称并不总是相同。 设备1的端口有时显示为“ACME-MIDI:端口1”,有时显示为“1-ACME:端口1”(例如,它们在重启后更改)。

我用不同的方法试图找到什么名称属于哪个设备(SetupDi,WMI,Win32_PnPSignedDriver,…),但我得到设备ID 它报告的端口名称,但我无法找到报告的MIDI端口使用设备ID或驱动程序键命名(ACME-MIDI:端口n)。

有什么建议?

更新

我仍在寻找一种解决方案,列出给定端口上MIDI接口的输入/输出端口(例如使用Windows API)。 看起来这很棘手,这就是我为此开始赏金的原因。

不幸的是,当单独使用MIDI API时,无法区分设备。 你必须依靠他们的名字。 幸运的是,虽然设备顺序可以改变,但我的经验是,这通常不会在重启时发生。 但是,正如您所见,它可以。

我过去在自己的软件中通过提示用户按键或移动设备上的控制旋钮来区分它们来处理这个问题。