zoukankan      html  css  js  c++  java
  • 怎样给filter加入自己定义接口

    给一个filter加入接口,过程例如以下:

    1、建立一个声明接口的头文件“Interface.h” 。内容包含指定接口的GUID(使用GuidGen.exe)以及接口函数的声明。

        记得加 initguid.h 的include,不然使用时会出现"无法解析的外部符号_IID_"错误

    2、在Cfilter类的头文件filter.h开头加入  #include “Interface.h” 。

    3、在Cfilter类的声明中继承这个接口  CFilter:public Interface

    4、在Cfilter类的声明中添加Interface接口的函数的声明:

          //--------Interface methods----------
         STDMETHODIMP    SetServerAddr(char* inIP, int inPort);

    5在Cfilter类的定义中实现Interface接口的函数的定义:

        //-----------------------Interface methods-----------------------------
        STDMETHODIMP CFilter::SetServerAddr(char* inIP, int inPort)
        {   

             ……
             return S_OK;
        }

    6、最后别忘了。在CFilter::NonDelegatingQueryInterface函数中加入两行代码,用来向外界暴露该接口:

        // Basic COM - used here to reveal our own interfaces

        STDMETHODIMP CFilter::NonDelegatingQueryInterface(REFIID riid, void ** ppv)

        {
            ……

            if (riid == IID_Interface)
                     return GetInterface((Interface *) this, ppv);
            …… 
        }

            至此,filter的接口加入完成。

    假设其他应用程序想要用这个接口。那么就像使用其他com组件一样。

    1、把Interface.h加入到project里。2、使用前加入  #include “Interface.h”。3、在成功加入filter之后,使用QueryInterface函数获得接口指针就可以使用。

  • 相关阅读:
    牛客练习赛53 B题调和级数
    装备购买(线性基)
    杨氏矩阵与勾长公式
    南昌邀请赛B题(拉格朗日插值)
    徐州网络赛补题
    __int128 输入输出模板
    51 nod1067 Bash游戏 V2(sg函数打表)
    堆优化的dijkstra算法
    ST表求区间最值
    Tree Reconstruction
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7227317.html
Copyright © 2011-2022 走看看