zoukankan      html  css  js  c++  java
  • ICreateDevEnum Interface

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

     
     
    amcap.exe中

    // 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 : public IUnknown
    ICreateDevEnum 是从IUnknown派生来的, CoCreateInstance创建一个组建,同时查询一个指定了CLSID的一个接口,如果函数调用成功,返回S_OK(?),接口指针存在最后一个参数。
  • 相关阅读:
    Appium 服务命令行参数
    DC 输入 输出 时钟 PVT设置
    .synopsys_dc.setup编写
    Excel VBA编程常用语句300句
    C# 泛型单例工厂
    C# Winform与JS交互
    SQL分析“聚集索引、非聚集索引”区别
    C# ClassHelper动态创建程序集和类, 添加/删除类属性
    从30个角度对比 PostgreSQL 和 MySQL
    C# 常用类和命名空间
  • 原文地址:https://www.cnblogs.com/jijm123/p/14274246.html
Copyright © 2011-2022 走看看