/*********************************************************************** * DllGetClassObject (OLEAUT32.@) */ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv) { *ppv = NULL; if (IsEqualGUID(rclsid,&CLSID_StdFont)) { if (IsEqualGUID(iid,&IID_IClassFactory)) { _get_STDFONT_CF(ppv); IClassFactory_AddRef((IClassFactory*)*ppv); return S_OK; } } if (IsEqualGUID(rclsid,&CLSID_StdPicture)) { if (IsEqualGUID(iid,&IID_IClassFactory)) { _get_STDPIC_CF(ppv); IClassFactory_AddRef((IClassFactory*)*ppv); return S_OK; } } if (IsEqualCLSID(rclsid, &CLSID_PSDispatch) && IsEqualIID(iid, &IID_IPSFactoryBuffer)) { *ppv = &pPSDispatchFacBuf; IPSFactoryBuffer_AddRef((IPSFactoryBuffer *)*ppv); return S_OK; } if (IsEqualGUID(rclsid,&CLSID_PSOAInterface)) { if (S_OK==TMARSHAL_DllGetClassObject(rclsid,iid,ppv)) return S_OK; /*FALLTHROUGH*/ } if (IsEqualCLSID(rclsid, &CLSID_PSTypeInfo) || IsEqualCLSID(rclsid, &CLSID_PSTypeLib) || IsEqualCLSID(rclsid, &CLSID_PSDispatch) || IsEqualCLSID(rclsid, &CLSID_PSEnumVariant)) return OLEAUTPS_DllGetClassObject(&CLSID_PSFactoryBuffer, iid, ppv); return OLEAUTPS_DllGetClassObject(rclsid, iid, ppv); }
HRESULT InstanceObjectFactory_Constructor(REFCLSID rclsid, IPropertyBag *pPropertyBag, REFIID riid, LPVOID *ppvObject) { InstanceObjectFactory *pInstanceObjectFactory; HRESULT hr = E_FAIL; TRACE("(RegistryPropertyBag=%p, riid=%s, ppvObject=%p)\n", pPropertyBag, debugstr_guid(riid), ppvObject); pInstanceObjectFactory = shdocvw_alloc(sizeof(InstanceObjectFactory)); if (pInstanceObjectFactory) { pInstanceObjectFactory->lpIClassFactoryVtbl = &InstanceObjectFactory_IClassFactoryVtbl; pInstanceObjectFactory->m_cRef = 0; memcpy(&pInstanceObjectFactory->m_clsidInstance, rclsid, sizeof(CLSID)); pInstanceObjectFactory->m_pPropertyBag = pPropertyBag; IPropertyBag_AddRef(pPropertyBag); IClassFactory_AddRef(STATIC_CAST(IClassFactory, pInstanceObjectFactory)); hr = IClassFactory_QueryInterface(STATIC_CAST(IClassFactory, pInstanceObjectFactory), riid, ppvObject); IClassFactory_Release(STATIC_CAST(IClassFactory, pInstanceObjectFactory)); } return hr; }
static HRESULT InstanceObjectFactory_Constructor(REFCLSID rclsid, IPropertyBag *pPropertyBag, REFIID riid, LPVOID *ppvObject) { InstanceObjectFactory *pInstanceObjectFactory; HRESULT hr = E_FAIL; TRACE("(RegistryPropertyBag=%p, riid=%s, ppvObject=%p)\n", pPropertyBag, debugstr_guid(riid), ppvObject); pInstanceObjectFactory = heap_alloc(sizeof(InstanceObjectFactory)); if (pInstanceObjectFactory) { pInstanceObjectFactory->IClassFactory_iface.lpVtbl = &InstanceObjectFactory_IClassFactoryVtbl; pInstanceObjectFactory->m_cRef = 0; pInstanceObjectFactory->m_clsidInstance = *rclsid; pInstanceObjectFactory->m_pPropertyBag = pPropertyBag; IPropertyBag_AddRef(pPropertyBag); IClassFactory_AddRef(&pInstanceObjectFactory->IClassFactory_iface); hr = IClassFactory_QueryInterface(&pInstanceObjectFactory->IClassFactory_iface, riid, ppvObject); IClassFactory_Release(&pInstanceObjectFactory->IClassFactory_iface); } return hr; }
static HRESULT WINAPI DXDiagCF_QueryInterface(IClassFactory *iface, REFIID riid, void **ppv) { if (ppv == NULL) return E_POINTER; if (IsEqualGUID(&IID_IUnknown, riid)) TRACE("(%p)->(IID_IUnknown %p)\n", iface, ppv); else if (IsEqualGUID(&IID_IClassFactory, riid)) TRACE("(%p)->(IID_IClassFactory %p)\n", iface, ppv); else if (IsEqualGUID(&IID_IExternalConnection, riid) || IsEqualGUID(&IID_IMarshal, riid)) { TRACE("(%p)->(%s) ignoring\n", iface, debugstr_guid(riid)); *ppv = NULL; return E_NOINTERFACE; } else { FIXME("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppv); *ppv = NULL; return E_NOINTERFACE; } *ppv = iface; IClassFactory_AddRef(iface); return S_OK; }
/****************************************************************** * DllGetClassObject (DMSYNTH.@) * * */ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) { TRACE("(%s, %s, %p)\n", debugstr_dmguid(rclsid), debugstr_dmguid(riid), ppv); if (IsEqualCLSID(rclsid, &CLSID_DirectMusicSynth) && IsEqualIID(riid, &IID_IClassFactory)) { *ppv = &Synth_CF; IClassFactory_AddRef((IClassFactory*)*ppv); return S_OK; } else if (IsEqualCLSID(rclsid, &CLSID_DirectMusicSynthSink) && IsEqualIID(riid, &IID_IClassFactory)) { *ppv = &SynthSink_CF; IClassFactory_AddRef((IClassFactory*)*ppv); return S_OK; } WARN("(%s,%s,%p): no interface found.\n", debugstr_dmguid(rclsid), debugstr_dmguid(riid), ppv); return CLASS_E_CLASSNOTAVAILABLE; }
static HRESULT WINAPI ClassMonikerCF_QueryInterface(IClassFactory *iface, REFIID riid, void **ppv) { *ppv = NULL; if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IClassFactory)) { *ppv = iface; IClassFactory_AddRef(iface); return S_OK; } return E_NOINTERFACE; }
static HRESULT WINAPI IMAPTransportCF_QueryInterface(IClassFactory *iface, REFIID riid, LPVOID *ppv) { *ppv = NULL; if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IClassFactory)) { *ppv = iface; IClassFactory_AddRef(iface); return S_OK; } return E_NOINTERFACE; }
static HRESULT WINAPI wucf_QueryInterface( IClassFactory *iface, REFIID riid, LPVOID *ppobj ) { if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IClassFactory)) { IClassFactory_AddRef( iface ); *ppobj = iface; return S_OK; } FIXME("interface %s not implemented\n", debugstr_guid(riid)); return E_NOINTERFACE; }
static HRESULT WINAPI RegistrarCF_QueryInterface(IClassFactory *iface, REFIID riid, void **ppvObject) { TRACE("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppvObject); if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IClassFactory, riid)) { *ppvObject = iface; IClassFactory_AddRef( iface ); return S_OK; } return E_NOINTERFACE; }
static HRESULT WINAPI FileMonikerCF_QueryInterface(LPCLASSFACTORY iface, REFIID riid, LPVOID *ppv) { *ppv = NULL; if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IClassFactory)) { *ppv = iface; IClassFactory_AddRef(iface); return S_OK; } return E_NOINTERFACE; }
static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFGUID riid, void **ppvObject) { if(IsEqualGUID(&IID_IClassFactory, riid) || IsEqualGUID(&IID_IUnknown, riid)) { IClassFactory_AddRef(iface); *ppvObject = iface; return S_OK; } WARN("not supported iid %s\n", debugstr_guid(riid)); *ppvObject = NULL; return E_NOINTERFACE; }
static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFIID riid, LPVOID *ppvOut) { *ppvOut = NULL; if (IsEqualIID(riid, &IID_IClassFactory) || IsEqualIID(riid, &IID_IUnknown)) { IClassFactory_AddRef(iface); *ppvOut = iface; return S_OK; } WARN("Unknown interface %s\n", debugstr_guid(riid)); return E_NOINTERFACE; }
/********************************************************************** * OBJSEL_IClassFactory_LockServer */ static HRESULT WINAPI OBJSEL_IClassFactory_LockServer( LPCLASSFACTORY iface, BOOL fLock) { TRACE("\n"); if (fLock) IClassFactory_AddRef(iface); else IClassFactory_Release(iface); return S_OK; }
static HRESULT WINAPI MSTASK_IClassFactory_LockServer( IClassFactory *iface, BOOL fLock) { TRACE("\n"); if (fLock) IClassFactory_AddRef(iface); else IClassFactory_Release(iface); return S_OK; }
/*********************************************************************** * DllGetClassObject (DINPUT8.@) */ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) { TRACE("(%s,%s,%p)\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv); if ( IsEqualCLSID( &IID_IClassFactory, riid ) ) { *ppv = &DINPUT8_CF; IClassFactory_AddRef((IClassFactory*)*ppv); return S_OK; } FIXME("(%s,%s,%p): no interface found.\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv); return CLASS_E_CLASSNOTAVAILABLE; }
/*********************************************************************** * DllGetClassObject (DXDIAGN.@) */ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) { TRACE("(%s,%s,%p)\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv); if (IsEqualGUID(rclsid, &CLSID_DxDiagProvider)) { IClassFactory_AddRef(&DXDiag_CF.IClassFactory_iface); *ppv = &DXDiag_CF.IClassFactory_iface; return S_OK; } FIXME("(%s,%s,%p): no interface found.\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv); return CLASS_E_CLASSNOTAVAILABLE; }
/********************************************************************** * COMCAT_IClassFactory_LockServer */ static HRESULT WINAPI COMCAT_IClassFactory_LockServer( LPCLASSFACTORY iface, BOOL fLock) { TRACE("\n"); if (fLock != FALSE) { IClassFactory_AddRef(iface); } else { IClassFactory_Release(iface); } return S_OK; }
static HRESULT WINAPI IClassFactory_fnQueryInterface(IClassFactory *iface, REFIID riid, void **ppobj) { TRACE("(%p,%s,%p)\n", iface, debugstr_guid(riid), ppobj); if ((IsEqualGUID(&IID_IUnknown, riid)) || (IsEqualGUID(&IID_IClassFactory, riid))) { *ppobj = iface; IClassFactory_AddRef(iface); return S_OK; } return E_NOINTERFACE; }
static HRESULT WINAPI IClassFactory_fnQueryInterface(LPCLASSFACTORY iface, REFIID riid,LPVOID *ppobj) { TRACE("(%p,%p,%p)\n", iface, riid, ppobj); if ((IsEqualGUID(&IID_IUnknown, riid)) || (IsEqualGUID(&IID_IClassFactory, riid))) { *ppobj = iface; IClassFactory_AddRef(iface); return S_OK; } return E_NOINTERFACE; }
static HRESULT WINAPI DSCF_QueryInterface(IClassFactory *iface, REFIID riid, void **ppobj) { if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IClassFactory)) { IClassFactory_AddRef(iface); *ppobj = iface; return S_OK; } *ppobj = NULL; WARN("(%p)->(%s,%p), not found\n", iface, debugstr_guid(riid), ppobj); return E_NOINTERFACE; }
/******************************************************************************* * DllGetClassObject [DPLAYX.@] * Retrieves DP or DPL class object from a DLL object * * NOTES * Docs say returns STDAPI * * PARAMS * rclsid [I] CLSID for the class object * riid [I] Reference to identifier of interface for class object * ppv [O] Address of variable to receive interface pointer for riid * * RETURNS * Success: S_OK * Failure: CLASS_E_CLASSNOTAVAILABLE, E_OUTOFMEMORY, E_INVALIDARG, * E_UNEXPECTED */ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) { TRACE("(%p,%p,%p)\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv); if ( IsEqualCLSID( riid, &IID_IClassFactory ) ) { *ppv = (LPVOID)&DP_and_DPL_CF; IClassFactory_AddRef( (IClassFactory*)*ppv ); return S_OK; } ERR("(%p,%p,%p): no interface found.\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv); return CLASS_E_CLASSNOTAVAILABLE; }
static HRESULT WINAPI CF_QueryInterface(IClassFactory *iface, REFIID riid, void **obj) { cf *This = impl_from_IClassFactory(iface); TRACE("(%p, %s, %p)\n", This, debugstr_guid(riid), obj); if( IsEqualCLSID( riid, &IID_IUnknown ) || IsEqualCLSID( riid, &IID_IClassFactory ) ) { IClassFactory_AddRef( iface ); *obj = iface; return S_OK; } return E_NOINTERFACE; }
static HRESULT WINAPI CFProxy_QueryInterface(LPCLASSFACTORY iface,REFIID riid, LPVOID *ppv) { ICOM_THIS_MULTI(CFProxy,lpvtbl_cf,iface); if (This->outer_unknown) return IUnknown_QueryInterface(This->outer_unknown, riid, ppv); *ppv = NULL; if (IsEqualIID(&IID_IClassFactory,riid) || IsEqualIID(&IID_IUnknown,riid)) { *ppv = (LPVOID)iface; IClassFactory_AddRef(iface); return S_OK; } if (IsEqualIID(riid,&IID_IMarshal)) /* just to avoid debug output */ return E_NOINTERFACE; FIXME("Unhandled interface: %s\n",debugstr_guid(riid)); return E_NOINTERFACE; }
static HRESULT WINAPI XFCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid, LPVOID *ppobj) { IClassFactoryImpl *This = impl_from_IClassFactory(iface); if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IClassFactory)) { IClassFactory_AddRef(iface); *ppobj = &This->IClassFactory_iface; return S_OK; } WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj); return E_NOINTERFACE; }
static HRESULT WINAPI MsiCF_QueryInterface(LPCLASSFACTORY iface, REFIID riid,LPVOID *ppobj) { IClassFactoryImpl *This = impl_from_IClassFactory(iface); TRACE("%p %s %p\n",This,debugstr_guid(riid),ppobj); if( IsEqualCLSID( riid, &IID_IUnknown ) || IsEqualCLSID( riid, &IID_IClassFactory ) ) { IClassFactory_AddRef( iface ); *ppobj = iface; return S_OK; } return E_NOINTERFACE; }
static HRESULT WINAPI DSCF_QueryInterface(IClassFactory *iface, REFIID riid, LPVOID *ppobj) { IClassFactoryImpl *This = impl_from_IClassFactory(iface); TRACE("(%p, %s, %p)\n", This, debugstr_guid(riid), ppobj); if (ppobj == NULL) return E_POINTER; if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IClassFactory)) { *ppobj = iface; IClassFactory_AddRef(iface); return S_OK; } *ppobj = NULL; return E_NOINTERFACE; }
static HRESULT WINAPI ITStorageImpl_QueryInterface( IITStorage* iface, REFIID riid, void** ppvObject) { ITStorageImpl *This = impl_from_IITStorage(iface); if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IITStorage)) { IClassFactory_AddRef(iface); *ppvObject = This; return S_OK; } WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppvObject); return E_NOINTERFACE; }
/*** IUnknown methods ***/ static HRESULT WINAPI IMediaStreamImpl_QueryInterface(IMediaStream* iface, REFIID riid, void** ppvObject) { IMediaStreamImpl *This = (IMediaStreamImpl *)iface; TRACE("(%p/%p)->(%s,%p)\n", iface, This, debugstr_guid(riid), ppvObject); if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IMediaStream)) { IClassFactory_AddRef(iface); *ppvObject = This; return S_OK; } ERR("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppvObject); return E_NOINTERFACE; }
static HRESULT WINAPI factory_QueryInterface(IClassFactory *iface, REFIID riid, LPVOID *obj) { if (!riid || !obj) return E_INVALIDARG; TRACE("%p,%s,%p\n", iface, debugstr_guid(riid), obj); if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IClassFactory)) { IClassFactory_AddRef(iface); *obj = iface; return S_OK; } *obj = NULL; FIXME("interface %s is not implemented\n", debugstr_guid(riid)); return E_NOINTERFACE; }
/*** IUnknown methods ***/ static HRESULT WINAPI MsiActiveScriptSite_QueryInterface(IActiveScriptSite* iface, REFIID riid, void** ppvObject) { MsiActiveScriptSite *This = (MsiActiveScriptSite *)iface; TRACE("(%p/%p)->(%s,%p)\n", iface, This, debugstr_guid(riid), ppvObject); if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IActiveScriptSite)) { IClassFactory_AddRef(iface); *ppvObject = This; return S_OK; } TRACE("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppvObject); return E_NOINTERFACE; }