[求助]: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?
請高手指點!
...全文
60 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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

2,541

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧