COM原理
+ -

COM的QueryInterface与NonDelegatingQueryInterface的测试用例

2022-01-08 80 0

在COM中,函数的调用实际是汇编 call 函数地址.对于一个类里定义的函数实际是一个一个的地址偏移.如果地址偏移是一样而且参数个数与排列都一样,函数叫什么名字是没有关系的。
这里关于这句话做一个测试用例,用于测试COMM的妙用:


#include <iostream>
#include <stdio.h>


class A
{
    virtual void NonDelegatingQueryInterface() = 0;
};

class B : public A
{
    virtual void Hello()
    {
        printf("hello B\n");
    }
};


class C
{
public:
  virtual   void QueryInterface()
    {
      printf("hello C\n");
    }
};



class D :public C, public B
{
public:
    virtual void NonDelegatingQueryInterface()
    {
        printf("NonDelegatingQueryInterface \n");
    }
    void Test()
    {
        ((C*)(A*)this)->QueryInterface();
    }
};


int main()
{
    D* p = new D();
    p->Test();

    return 0;

}

执行结果:

NonDelegatingQueryInterface

0 篇笔记 写笔记

PortClass 电源管理
电源管理实现的COM是AdapterPowerMgr,继承于IAdapterPowerManagement和CUnknown,用于电源的管理。class AdapterPowerMgr: public IAdapterPowerManagement, public CUnkn......
COM的QueryInterface与NonDelegatingQueryInterface关系
COM类的实现如下:class CMyComponent : public CUnknown, public ISomeInterface{public: DECLARE_IUNKNOWN; STDMETHODIMP NonDelegatingQueryInterface(RE......
COM的QueryInterface与NonDelegatingQueryInterface的测试用例
在COM中,函数的调用实际是汇编 call 函数地址.对于一个类里定义的函数实际是一个一个的地址偏移.如果地址偏移是一样而且参数个数与排列都一样,函数叫什么名字是没有关系的。这里关于这句话做一个测试用例,用于测试COMM的妙用:#include #include......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!