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

时间:2010-05-24 11:17:23

标签: visual-c++ com atl

我有一个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

ABC API需要调用XYZ功能

 STDMETHODIMP ABC()
{
    XYZ xyz;
    xyz.dosomething();
}
dosomething函数需要调用com服务器任务函数,如下所示

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

如何做到这一点?我是否需要CoCreateInstance ITask in dosomething?

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

1 个答案:

答案 0 :(得分:0)

CTask不可创建,因为它不实现IUnknown方法。您需要使用一个用作COM对象的ATL类,例如CComObject

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