[求助]:IDirectSoundCapture和IMoniker的關係?

aachenG 2003-09-11 02:54:22
情況是這樣的:
(1)因為工作需要,對一個音頻捕捉設備,我既要通過GUID使用IDirectSoundCapture,又要通過IMoniker來取得設備的Displayname.
(2)其中GUID是使用DirectSoundCaptureEnumerate()得到的,IMoniker是通過ICreateDevEnum::CreateClassEnumerator()得到的.一種是DirectSound的方法,一種是DirectShow的方法!
(3)問題是,當機器上有多個音頻捕捉設備時,兩種方法都得到了一個設備集合,我如何才能把兩個集合中相同的設備對應起來?

以上得到的同一個設備的IDirectSoundCapture和IMoniker,難道它們沒有甚麼聯系嗎?怎麼才能得到同一個設備的GUID和displayname?
請高手指點!
...全文
25 点赞 收藏 4
写回复
4 条回复
flyingeagle 2003年09月12日
我想微软不是大傻瓜,;)无论你用什么方法去寻找你关心的设备,你得到的结果应该是一样的啊!
利用IMoniker的方法你就可以得到设备的displayname了.同时利用IMoniker的方法GetClassID你就可以得到相应设备的GUID了.下面的你就可以做你想做的事情了吧.
回复 点赞
dreameasy 2003年09月12日
顶!
回复 点赞
aachenG 2003年09月12日
GetClassID我是已經試過的,得到的GUID是一個Class ID.無論是Video capture, 還是Audio capture, 或者audio renderer,得到的都是CLSID_DeviceMoniker這個常量.
我的問題,我已經找到解決的辦法了.原來相同類型的設備,它們的displayname並不一定是唯一的.對video capture,相同類型的,也有不同的displayname;而對於audio capture和renderer,形同類型的,displayname是一樣的,形式都是"@device:cm:{CLSID_AudioInputDeviceCategory}\Friendlyname".所以我可以在需要的時候自己構造一個displayname.
回复 点赞
aachenG 2003年09月11日
没人知道吗?
up
回复 点赞
发动态
发帖子
多媒体/流媒体开发
创建于2007-08-27

2052

社区成员

2.0w+

社区内容

专题开发/技术/项目 多媒体/流媒体开发
社区公告
暂无公告