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
原文轉自:http://www.anti-gravitydesign.com