描述:
我想hook word的另存操作,看过几个文章知道要hook com接口,我看他们的文章都可找到相应接口的虚函数表,可是我在msword.tlh中看到所有的接口都继承IDispath,我自己想构造一个和word接口相同的虚函数表,这个虚函数表如何构造,我这种写法对吗?还有如何得到word接口的地址?
struct _IDocumentVtbl
{
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IDispatch *This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IDispatch *This);
ULONG ( STDMETHODCALLTYPE *Release )(
IDispatch *This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IDispatch *This,
/* [out] */ UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IDispatch *This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IDispatch *This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
HRESULT ( STDMETHODCALLTYPE *Invoke )(
IDispatch *This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
...
}

