注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

面包会有的

...

 
 
 

日志

 
 

ICreateDevEnum Interface  

2012-01-12 01:14:34|  分类: amcap例子研究 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
ICreateDevEnum 接口,创建特定的类(如视频捕获设备,音频捕获设备,视频压缩等)的一个枚举器 ,可以使用CLSID_SystemDeviceEnum来得到该指针。
ICreateDevEnum::CreateClassEnumerator(
REFCLSID clsidDeviceClass, //设备类别
IEnumMoniker **ppEnumMoniker, //输出参数,IEnumMoniker ××
DWORD dwFlags 
);


amcap.exe中
ICreateDevEnum Interface - 加菲 - 视频会议软件开发 - 加菲
 

// enumerate all video capture devices
// 枚举所有视频捕获设备
ICreateDevEnum *pCreateDevEnum=0;
hr = CoCreateInstance(
CLSID_SystemDeviceEnum, //用来唯一标识一个对象的CLSID(128位),需要用它来创建指定对象
NULL, //指向接口IUnknown的指针
CLSCTX_INPROC_SERVER,//运行可执行代码的上下文,[in] 组件类别. 可使用CLSCTX枚举器中预定义的值
IID_ICreateDevEnum, ////创建的Com对象的接口标识符,EXTERN_C const IID IID_ICreateDevEnum;
(void**)&pCreateDevEnum//用来接收指向Com对象接口地址的指针变量
);//用指定的类标识符创建一个Com对象,用指定的类标识符创建一个未初始化的对象。当在本机中只创建一个对象时,可以调用CoCreateInstance;在远程系统中创建一个对象时,可以调用CoCreateInstanceEx;创建多个同一CLSID的对象时, 可以参考 CoGetClassObject 函数。
if(hr != NOERROR)
{
ErrMsg(TEXT("创建设备枚举器(Enumerator)时出错"));
return;
}


看了小半本COM技术内幕

ICreateDevEnum Interface - 加菲 - 视频会议软件开发 - 加菲

讲了一些组件的实现过程,前面这些讲的挺不错,比较通俗,

ICreateDevEnum : public IUnknown
ICreateDevEnum 是从IUnknown派生来的, CoCreateInstance创建一个组建,同时查询一个指定了CLSID的一个接口,如果函数调用成功,返回S_OK(?),接口指针存在最后一个参数。

  评论这张
 
阅读(822)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017