• 怎样给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函数获得接口指针就可以使用。

  • 相关阅读:
    Checking Types Against the Real World in TypeScript
    nexus pip proxy config
    go.rice 强大灵活的golang 静态资源嵌入包
    几个golang 静态资源嵌入包
    rpm 子包创建学习
    Rpm Creating Subpackages
    ava 类似jest snapshot 功能试用
    ava js 测试框架基本试用
    The Architectural Principles Behind Vrbo’s GraphQL Implementation
    graphql-compose graphql schema 生成工具集
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7227317.html
Copyright © 2020-2023  润新知