使用WINMM.DLL当什么决定在Windows声音设备的顺序?
题
我试图使用n音讯创建多重声音输出的应用程序。我们已经安装了8和USB声卡。 n音讯让我用所有的8个,但我不能找出一个图案,用于确定哪个设备指数是卡。
该卡将被挂接到不同的硬件,从而确保你知道你正在使用的卡是很重要的。
我一直在试图使用WMI轮询信息,但是我似乎无法找到确定声音设备的顺序的任何信息。
<强>更新强> 我忘了,包括关于这个问题的一些信息。声音卡是通过一个12端口集线器挂接所有USB声卡。
解决方案
设备的顺序是非确定性的Windows的所有版本。对于Vista和上面,该装置通常由DSOUND GUID(更多或更少)排序,以便它们有效地随机。
其他提示
我假设你正在使用waveout的?您可以拨打WaveOut.GetCapabilities(deviceNumber)来获得设备的名称保持,这可能会帮助你。
这是我想出了到目前为止并为我们工作。
使用WMI你可以从Win32_SoundDevice设备ID。然后使用您可以访问在HKLM \ SYSTEM登记中心\ CURRENTCONTROLSET \ ENUM \“的DeviceID”并获得命名的“驱动程序”的字符串值。该值包含在端部的ClassGUID加上一个数。
示例: {4d36e96c-E325-11CE-BFC1-08002BE10318} \ 0015
如果您剥离,上数*(15)*所有的你的声音的设备和命令他们,也就是,该装置由n音讯列出用途WINMM.DLL的顺序。还存在用于这些声音设备的位置时,使用的DeviceID无论是在以相同的键的系统登录或从Win32_PNPEntity。
在我们的情况下,位置让我们确定哪个声音设备的USB集线器的端口插入。
看看这个MSDN文章的。它使用DirectSound的枚举音频设备: