virtual HRESULT GetIDsOfNames(REFIID riid,LPOLESTR *
rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) = 0;
virtual HRESULT Invoke(DISPID dispIdMember,REFIID
riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,
VARIANT *pVarResult,EXCEINFO *pExcepInfo,
UINT *puArgErr) = 0;
};
在自动化对象中,每一个成员函数均对应一个分发ID(DISPID),服务导航器InVoke就是通过此分发ID建立与目标函数的连接.可以用GetIDsofName实现符号(函数名)到ID的映射.因此,应用程序就有了一个统一的界面来使用组件提供的各项服务.
对于数据类型的兼容性问题,微软提供了一个生硬的解决方法.定义一个尽可能"包罗万象"的大的数据结构VARIANT