代码之家  ›  专栏  ›  技术社区  ›  anand

如何从COM服务器内部调用接口API

  •  0
  • anand  · 技术社区  · 14 年前

    我有一个com服务器,它的一些接口公开了一些API

    COM类如下所示

    class ATL_NO_VTABLE CTask :
        public CComObjectRootEx<CComSingleThreadModel>,
        public CComCoClass<CTask, &CLSID_Task>,
        public ITask
    {
    
    public:
     STDMETHOD (Task)();
     STDMETHOD (ABC)();
    ...
    }
    

    现在,这个com服务器还包含一个以上的类XYZ

     STDMETHODIMP ABC()
    {
        XYZ xyz;
        xyz.dosomething();
    }
    

    dosomething函数需要调用com服务器任务函数,如下所示

      class XYZ
           {
          public:
            void dosomething()
             {
            // need to call Task function
             }
            };
    

    如何做到这一点?我需要在dosomething中创建实例ITask吗?

    我尝试创建CTask taskl;但它给出了一些错误。

    1 回复  |  直到 14 年前
        1
  •  0
  •   sharptooth    14 年前

    CTask 是不可创建的,因为它没有实现 IUnknown 方法。你需要使用其中一个 ATL 例如,用于用作COM对象的类 CComObject

    CComPtr<ITask> newTask = new CComObject<CTask>();