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

len*_*iep 5 c# midi

我的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).看起来这很棘手,这就是为什么我开始对此表示赏心悦目.

Bra*_*rad 0

不幸的是,当单独使用 MIDI API 时,无法区分设备。你必须依赖他们的名字。幸运的是,虽然设备顺序可能会发生变化,但根据我的经验,这种情况通常不会在重新启动时发生。然而,正如您所看到的,它可以。

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