5

我正在尝试使用 NAudio 创建多声音输出应用程序。我们安装了 8 个 USB 声卡。NAudio 让我可以使用全部 8 个,但我无法找出确定哪个设备索引是哪个卡的模式。

这些卡将连接到不同的硬件,因此确保您知道您使用的是哪张卡非常重要。

我一直在尝试使用 WMI 来轮询信息,但我似乎无法找到任何决定声音设备顺序的信息。

更新: 我忘记包含有关此问题的一些信息。声卡都是通过 12 端口集线器连接的 USB 声卡。

4

4 回答 4

4

对于所有版本的 Windows,设备的顺序都是不确定的。对于 Vista 及更高版本,设备通常按 DSound GUID(或多或少)排序,因此它们实际上是随机的。

于 2009-10-02T05:00:13.490 回答
2

我假设您正在使用 WaveOut?您可以调用 WaveOut.GetCapabilities(deviceNumber) 来获取设备的名称,这可能会对您有所帮助。

于 2009-10-02T06:50:28.527 回答
2

这是我迄今为止提出的,它对我们有用。

使用 WMI,您可以从 Win32_SoundDevice 获取 DeviceID。然后使用它,您可以访问 HKLM\SYSTEM\CurrentControlSet\ENUM\'DeviceID' 的注册表并获取名为“Driver”的字符串值。此值包含 ClassGUID 加上末尾的数字。

示例:{4d36e96c-e325-11ce-bfc1-08002be10318}\0015

If you strip off that last number*(15)* for all of you sound devices and order them, that is the order that the devices are listed from NAudio with uses winmm.dll. There is also a location for these sound devices, either in the registery at the same key or from Win32_PNPEntity using the DeviceID.

In our case the location lets us determine which port of the USB hub that sound device is plugged into.

于 2009-10-02T16:30:47.143 回答
1

看看这篇 MSDN 文章。它使用 DirectSound 枚举音频设备:

http://msdn.microsoft.com/en-us/library/bb318674(VS.85).aspx

于 2009-10-01T18:40:12.383 回答