static HRESULT WINAPI BindStatusCallback_OnObjectAvailable(IBindStatusCallbackEx *iface, REFIID riid, IUnknown *punk) { BindStatusCallback *This = impl_from_IBindStatusCallbackEx(iface); TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), punk); return IBindStatusCallback_OnObjectAvailable(This->callback, riid, punk); }
static HRESULT WINAPI ProxyBindStatusCallback_OnObjectAvailable(IBindStatusCallback *iface, REFIID riid, IUnknown *punk) { ProxyBindStatusCallback *This = (ProxyBindStatusCallback *)iface; if(This->pBSC) return IBindStatusCallback_OnObjectAvailable(This->pBSC, riid, punk); return S_OK; }
static HRESULT http_load_hack(DocHost *This, IMoniker *mon, IBindStatusCallback *callback, IBindCtx *bindctx) { IPersistMoniker *persist; IUnknown *doc; HRESULT hres; /* * FIXME: * We should use URLMoniker's BindToObject instead creating HTMLDocument here. * This should be fixed when mshtml.dll and urlmon.dll will be good enough. */ hres = CoCreateInstance(&CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER, &IID_IUnknown, (void**)&doc); if(FAILED(hres)) { ERR("Could not create HTMLDocument: %08x\n", hres); return hres; } hres = IUnknown_QueryInterface(doc, &IID_IPersistMoniker, (void**)&persist); if(FAILED(hres)) { IUnknown_Release(doc); return hres; } hres = IPersistMoniker_Load(persist, FALSE, mon, bindctx, 0); IPersistMoniker_Release(persist); if(SUCCEEDED(hres)) hres = IBindStatusCallback_OnObjectAvailable(callback, &IID_IUnknown, doc); else WARN("Load failed: %08x\n", hres); IUnknown_Release(doc); return IBindStatusCallback_OnStopBinding(callback, hres, NULL); }
static HRESULT create_mime_object(Binding *binding, const CLSID *clsid, LPCWSTR clsid_str) { IPersistMoniker *persist; HRESULT hres; hres = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER, &binding->iid, (void**)&binding->obj); if(FAILED(hres)) { WARN("CoCreateInstance failed: %08x\n", hres); return INET_E_CANNOT_INSTANTIATE_OBJECT; } binding->state |= BINDING_OBJAVAIL; hres = IUnknown_QueryInterface(binding->obj, &IID_IPersistMoniker, (void**)&persist); if(SUCCEEDED(hres)) { IMonikerProp *prop; hres = IPersistMoniker_QueryInterface(persist, &IID_IMonikerProp, (void**)&prop); if(SUCCEEDED(hres)) { IMonikerProp_PutProperty(prop, MIMETYPEPROP, binding->mime); IMonikerProp_PutProperty(prop, CLASSIDPROP, clsid_str); IMonikerProp_Release(prop); } load_doc_mon(binding, persist); IPersistMoniker_Release(persist); } else { FIXME("Could not get IPersistMoniker: %08x\n", hres); /* FIXME: Try query IPersistFile */ } IBindStatusCallback_OnObjectAvailable(binding->callback, &binding->iid, binding->obj); return S_OK; }