windows - 在 windows xp 上检索详细的 usb midi 设备信息

标签 windows winapi device midi

函数midiOutGetDevCaps返回一个结构 MIDIOUTCAPS。 在 Windows XP 上查询 USB MIDI 设备时,我需要更具体的信息,特别是在使用设备管理器打开相应设备时,我需要显示在“位置”下的信息。 我需要此信息以便以编程方式区分连接到计算机的多个 MIDI 接口(interface)。使用midiOutGetDevCaps,我为连接到计算机的每个midi usb接口(interface)统一获取“USB Audio Device”,因此无法区分接口(interface)。 更糟糕的是,这个字符串是本地化的,所以例如在德语 Windows 上,您将获得“USB Audiogerät”而不是“USB Audio Device”。

最佳答案

我想这取决于你有多绝望。我自己也试过使用 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% 是注释),但是找出键和特殊情况之间的所有关系需要几天时间。

关于windows - 在 windows xp 上检索详细的 usb midi 设备信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4555987/

相关文章:

winapi - 如何检测应用程序所需的 DLL?

delphi - 如何在Delphi中显示Vista风格的气球提示?

c++ - 按下 F5 且源代码已过时时启用自动构建

windows - 如何从批处理文件中调用 VBA 函数

windows - 删除使用 TempFile 创建的锁定文件

windows - 使用Jetty WTP插件在Jetty上部署JSP页面时出现"PWC6345: There is an error in invoking javac."错误

安卓移动控制

Android:调用Web服务时操作超时

安卓蓝牙 : Unable to connect to listening socket after generating a random UUID

java - 可写文件权限问题