函数midiOutGetDevCaps返回一个结构MIDIOUTCAPS。 在Windows XP上查询usb midi设备时,我需要更多具体信息,特别是当使用设备管理器打开相应设备时,我需要“位置”下显示的信息。 我需要这些信息,以便以编程方式区分连接到计算机的几个MIDI接口。使用midiOutGetDevCaps,我为连接到计算机的每个midi usb接口统一获取“USB Audio Device”,因此无法区分接口。 更糟糕的是,这个字符串是本地化的,所以例如在德国Windows上你会得到“USBAudiogerät”而不是“USB Audio Device”。
答案 0 :(得分:1)
我想这取决于你是多么绝望。我有自己的USB设备运行。在我的情况下,我需要枚举某些USB COM端口相关的设备。 。 。无论它们当前是否已连接到系统。
这是所有公司专有代码,抱歉我无法发布,但搜索有关USB相关设备的所有信息从这里开始(Perl):
$hostnamePrefix = "//$hostname/";
my $baseKey = "${hostnamePrefix}HKEY_LOCAL_MACHINE/System/CurrentControlSet/";
my $regVidList = Win32::TieRegistry->new("${baseKey}Enum/USB/", $optionsRef);
如果记忆为我服务,那么这是一个相当直接的结构。我相信你实际上必须遍历注册表的两个独立部分才能获得所需的一切。 。 。如果你非常渴望尝试这一点,我很乐意尽我所能回答问题,但发布代码需要得到我们法律部门的批准。 (并非不可能,但需要数周才能获得。)
此外,虽然这适用于XP。 。 。我不知道它如何在Win7上运行。 (我不知道哪种方式,没有人尝试过我所知道的。)
编码这并不是那么糟糕(导致Perl脚本大约有1000行代码几乎有50%的注释),但是解决密钥和特殊情况之间的所有关系需要几天时间。