static HRESULT WINAPI PHDispatch_Invoke(IDispatch *iface, DISPID dispid, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) { PluginHost *This = impl_from_IDispatch(iface); FIXME("(%p)->(%d %x %p %p)\n", This, dispid, wFlags, pDispParams, pVarResult); return E_NOTIMPL; }
static HRESULT WINAPI PHDispatch_GetIDsOfNames(IDispatch *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) { PluginHost *This = impl_from_IDispatch(iface); FIXME("(%p)->(%s %p %d %d %p)\n", This, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId); return E_NOTIMPL; }
static HRESULT WINAPI PHDispatch_GetTypeInfo(IDispatch *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) { PluginHost *This = impl_from_IDispatch(iface); FIXME("(%p)->(%d %d %p)\n", This, iTInfo, lcid, ppTInfo); return E_NOTIMPL; }
static HRESULT WINAPI ClDispatch_Invoke(IDispatch *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) { DocHost *This = impl_from_IDispatch(iface); TRACE("(%p)->(%s %s %d %04x %p %p %p %p)\n", This, debugstr_dispid(dispIdMember), debugstr_guid(riid), lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); switch(dispIdMember) { case DISPID_AMBIENT_USERMODE: case DISPID_AMBIENT_DLCONTROL: case DISPID_AMBIENT_USERAGENT: case DISPID_AMBIENT_PALETTE: if(!This->client_disp) return E_FAIL; return IDispatch_Invoke(This->client_disp, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); case DISPID_AMBIENT_OFFLINEIFNOTCONNECTED: V_VT(pVarResult) = VT_BOOL; V_BOOL(pVarResult) = This->offline; return S_OK; case DISPID_AMBIENT_SILENT: V_VT(pVarResult) = VT_BOOL; V_BOOL(pVarResult) = This->offline; return S_OK; } FIXME("unhandled dispid %d\n", dispIdMember); return E_NOTIMPL; }
static HRESULT WINAPI ClDispatch_GetTypeInfoCount(IDispatch *iface, UINT *pctinfo) { DocHost *This = impl_from_IDispatch(iface); TRACE("(%p)->(%p)\n", This, pctinfo); return E_NOTIMPL; }
/****************************************************************************** * IDispatch_GetTypeInfoCount {OLEAUT32} * * Get the count of type information in an IDispatch interface. * * PARAMS * iface [I] IDispatch interface * pctinfo [O] Destination for the count * * RETURNS * Success: S_OK. pctinfo is updated with the count. This is always 1 if * the object provides type information, and 0 if it does not. * Failure: E_NOTIMPL. The object does not provide type information. * * NOTES * See IDispatch() and IDispatch_GetTypeInfo(). */ static HRESULT WINAPI StdDispatch_GetTypeInfoCount(LPDISPATCH iface, UINT * pctinfo) { StdDispatch *This = impl_from_IDispatch(iface); TRACE("(%p)\n", pctinfo); *pctinfo = This->pTypeInfo ? 1 : 0; return S_OK; }
/****************************************************************************** * IDispatch_AddRef {OLEAUT32} * * See IUnknown_AddRef. */ static ULONG WINAPI StdDispatch_AddRef(LPDISPATCH iface) { StdDispatch *This = impl_from_IDispatch(iface); ULONG refCount = InterlockedIncrement(&This->ref); TRACE("(%p)->(ref before=%u)\n",This, refCount - 1); return refCount; }
static HRESULT WINAPI ClDispatch_GetTypeInfo(IDispatch *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) { DocHost *This = impl_from_IDispatch(iface); TRACE("(%p)->(%u %d %p)\n", This, iTInfo, lcid, ppTInfo); return E_NOTIMPL; }
static ULONG WINAPI dispevent_Release(IDispatch *iface) { dispevent *This = impl_from_IDispatch( iface ); ULONG ref = InterlockedDecrement( &This->ref ); if (ref == 0) HeapFree(GetProcessHeap(), 0, This); return ref; }
/****************************************************************************** * IDispatch_GetIDsOfNames {OLEAUT32} * * Convert a methods name and an optional set of parameter names into DISPIDs * for passing to IDispatch_Invoke(). * * PARAMS * iface [I] IDispatch interface * riid [I] Reserved, set to IID_NULL * rgszNames [I] Name to convert * cNames [I] Number of names in rgszNames * lcid [I] Locale of the type information to convert from * rgDispId [O] Destination for converted DISPIDs. * * RETURNS * Success: S_OK. * Failure: DISP_E_UNKNOWNNAME, if any of the names is invalid. * DISP_E_UNKNOWNLCID if lcid is invalid. * Otherwise, an HRESULT error code. * * NOTES * This call defers to ITypeInfo_GetIDsOfNames(), using the ITypeInfo object * contained within the IDispatch object. * The first member of the names list must be a method name. The names following * the method name are the parameters for that method. */ static HRESULT WINAPI StdDispatch_GetIDsOfNames(LPDISPATCH iface, REFIID riid, LPOLESTR * rgszNames, UINT cNames, LCID lcid, DISPID * rgDispId) { StdDispatch *This = impl_from_IDispatch(iface); TRACE("(%s, %p, %d, 0x%x, %p)\n", debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId); if (!IsEqualGUID(riid, &IID_NULL)) { FIXME(" expected riid == IID_NULL\n"); return E_INVALIDARG; } return DispGetIDsOfNames(This->pTypeInfo, rgszNames, cNames, rgDispId); }
/****************************************************************************** * IDispatch_Invoke {OLEAUT32} * * Call an object method. * * PARAMS * iface [I] IDispatch interface * dispIdMember [I] DISPID of the method (from GetIDsOfNames()) * riid [I] Reserved, set to IID_NULL * lcid [I] Locale of the type information to convert parameters with * wFlags, [I] Kind of method call (DISPATCH_ flags from "oaidl.h") * pDispParams [I] Array of method arguments * pVarResult [O] Destination for the result of the call * pExcepInfo [O] Destination for exception information * puArgErr [O] Destination for bad argument * * RETURNS * Success: S_OK. * Failure: See DispInvoke() for failure cases. * * NOTES * See DispInvoke() and IDispatch(). */ static HRESULT WINAPI StdDispatch_Invoke(LPDISPATCH iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS * pDispParams, VARIANT * pVarResult, EXCEPINFO * pExcepInfo, UINT * puArgErr) { StdDispatch *This = impl_from_IDispatch(iface); TRACE("(%d, %s, 0x%x, 0x%x, %p, %p, %p, %p)\n", dispIdMember, debugstr_guid(riid), lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); if (!IsEqualGUID(riid, &IID_NULL)) { FIXME(" expected riid == IID_NULL\n"); return E_INVALIDARG; } return DispInvoke(This->pvThis, This->pTypeInfo, dispIdMember, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); }
/****************************************************************************** * IDispatch_Release {OLEAUT32} * * See IUnknown_Release. */ static ULONG WINAPI StdDispatch_Release(LPDISPATCH iface) { StdDispatch *This = impl_from_IDispatch(iface); ULONG refCount = InterlockedDecrement(&This->ref); TRACE("(%p)->(ref before=%u)\n", This, refCount + 1); if (!refCount) { ITypeInfo_Release(This->pTypeInfo); CoTaskMemFree(This); } return refCount; }
/****************************************************************************** * IDispatch_GetTypeInfo {OLEAUT32} * * Get type information from an IDispatch interface. * * PARAMS * iface [I] IDispatch interface * iTInfo [I] Index of type information. * lcid [I] Locale of the type information to get * ppTInfo [O] Destination for the ITypeInfo object * * RETURNS * Success: S_OK. ppTInfo is updated with the objects type information * Failure: DISP_E_BADINDEX, if iTInfo is any value other than 0. * * NOTES * See IDispatch. */ static HRESULT WINAPI StdDispatch_GetTypeInfo(LPDISPATCH iface, UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo) { StdDispatch *This = impl_from_IDispatch(iface); TRACE("(%d, %x, %p)\n", iTInfo, lcid, ppTInfo); *ppTInfo = NULL; if (iTInfo != 0) return DISP_E_BADINDEX; if (This->pTypeInfo) { *ppTInfo = This->pTypeInfo; ITypeInfo_AddRef(*ppTInfo); } return S_OK; }
/****************************************************************************** * IDispatch_QueryInterface {OLEAUT32} * * See IUnknown_QueryInterface. */ static HRESULT WINAPI StdDispatch_QueryInterface( LPDISPATCH iface, REFIID riid, void** ppvObject) { StdDispatch *This = impl_from_IDispatch(iface); TRACE("(%p)->(%s, %p)\n", iface, debugstr_guid(riid), ppvObject); if (IsEqualIID(riid, &IID_IDispatch) || IsEqualIID(riid, &IID_IUnknown)) { *ppvObject = This; IUnknown_AddRef((LPUNKNOWN)*ppvObject); return S_OK; } return E_NOINTERFACE; }
static ULONG WINAPI PHDispatch_AddRef(IDispatch *iface) { PluginHost *This = impl_from_IDispatch(iface); return IOleClientSite_AddRef(&This->IOleClientSite_iface); }
static ULONG WINAPI dispevent_AddRef(IDispatch *iface) { dispevent *This = impl_from_IDispatch( iface ); return InterlockedIncrement( &This->ref ); }
static HRESULT WINAPI ClDispatch_QueryInterface(IDispatch *iface, REFIID riid, void **ppv) { DocHost *This = impl_from_IDispatch(iface); return IOleClientSite_QueryInterface(&This->IOleClientSite_iface, riid, ppv); }
static ULONG WINAPI ClDispatch_Release(IDispatch *iface) { DocHost *This = impl_from_IDispatch(iface); return IOleClientSite_Release(&This->IOleClientSite_iface); }
static HRESULT WINAPI PHDispatch_GetTypeInfoCount(IDispatch *iface, UINT *pctinfo) { PluginHost *This = impl_from_IDispatch(iface); FIXME("(%p)->(%p)\n", This, pctinfo); return E_NOTIMPL; }