• 如何给filter添加自定义接口 分类: DirectX 2014-10-24 08:59 499人阅读 评论(0) 收藏


    给一个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添加到工程里。2、使用前添加  #include “Interface.h”。3、在成功添加filter之后,使用QueryInterface函数获得接口指针即可使用。

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Post请求的两种编码格式:application/x-www-form-urlencoded和multipart/form-data传参方式
    工作中常用的JavaScript函数片段
    解决导入导出Excel表格文字乱码问题
    清空antd-design时间选择组件 RangePicker的值
    react.js Hooks路由跳转
    linux跳板机服务器搭建
    docker及docker-compose学习
    Android Jenkins+Git+Gradle持续集成
    Windows Server 2008 R2常规安全设置及基本安全策略
    ubuntu lnmp安装及php扩展
  • 原文地址:https://www.cnblogs.com/mao0504/p/4706493.html
Copyright © 2020-2023  润新知