我需要在Windows上枚举直接声音设备,并序列化用于输出特定频道的实际设备。这似乎通过保存直接声音设备GUID来正常完成。但是,如果它存在于另一台计算机上,我需要连接到相同的硬件。我尝试过使用GUID,但在插入了完全相同的音频设备的不同计算机上则有所不同。
我相信,因为它是我绑定的音频硬件,而不是角色,我应该使用设备接口路径,如Windows设备管理器所示,但是没有'似乎是从直接声音对象到设备管理器路径的一种方式。
是否可以进行此映射?
答案 0 :(得分:0)
这里有一个例子:http://www.chrisnet.net/code.htm显示如何使用CLSID_DirectSoundPrivate
接口,这是非常重要的,如果你不知道要找什么,几乎不可能通过MSDN找到,并且有一个涉及多个调用的可怕接口,除了在这个例子中以外的任何地方都没有解释。
我采用了这个示例,最后发现堆栈违规试图在属性集上调用Get
方法。
事实证明,直接展示使用相同的guid定义相同的IKsPropertySet
界面,但使用不同的vtable,如果#include
dshow.h
或{{1,则会导致与vtable相关的可怕问题在strmif.h
之前。不用说,我不为所动。
所需的电话如下:
dsound.h