static HRESULT WINAPI XMLView_Binding_Abort(IBinding *iface) { Binding *This = impl_from_IBinding(iface); TRACE("(%p)\n", This); return IBinding_Abort(This->binding); }
static HRESULT WINAPI Binding_GetBindResult(IBinding *iface, CLSID *pclsidProtocol, DWORD *pdwResult, LPOLESTR *pszResult, DWORD *pdwReserved) { Binding *This = impl_from_IBinding(iface); FIXME("(%p)->(%p %p %p %p)\n", This, pclsidProtocol, pdwResult, pszResult, pdwReserved); return E_NOTIMPL; }
static HRESULT WINAPI XMLView_Binding_GetPriority( IBinding *iface, LONG *pnPriority) { Binding *This = impl_from_IBinding(iface); TRACE("(%p)->(%p)\n", This, pnPriority); return IBinding_GetPriority(This->binding, pnPriority); }
static ULONG WINAPI XMLView_Binding_AddRef(IBinding *iface) { Binding *This = impl_from_IBinding(iface); LONG ref = InterlockedIncrement(&This->ref); TRACE("(%p)->(%d)\n", This, ref); return ref; }
static HRESULT WINAPI Binding_QueryInterface(IBinding *iface, REFIID riid, void **ppv) { Binding *This = impl_from_IBinding(iface); *ppv = NULL; if(IsEqualGUID(&IID_IUnknown, riid)) { TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); *ppv = &This->IBinding_iface; }else if(IsEqualGUID(&IID_IBinding, riid)) { TRACE("(%p)->(IID_IBinding %p)\n", This, ppv); *ppv = &This->IBinding_iface; }else if(IsEqualGUID(&IID_IInternetProtocolSink, riid)) { TRACE("(%p)->(IID_IInternetProtocolSink %p)\n", This, ppv); *ppv = &This->IInternetProtocolSink_iface; }else if(IsEqualGUID(&IID_IInternetBindInfo, riid)) { TRACE("(%p)->(IID_IInternetBindInfo %p)\n", This, ppv); *ppv = &This->IInternetBindInfo_iface; }else if(IsEqualGUID(&IID_IServiceProvider, riid)) { TRACE("(%p)->(IID_IServiceProvider %p)\n", This, ppv); *ppv = &This->IServiceProvider_iface; }else if(IsEqualGUID(&IID_IWinInetInfo, riid)) { TRACE("(%p)->(IID_IWinInetInfo %p)\n", This, ppv); /* NOTE: This violidates COM rules, but tests prove that we should do it */ if(!This->protocol->wininet_info) return E_NOINTERFACE; *ppv = &This->IWinInetHttpInfo_iface; }else if(IsEqualGUID(&IID_IWinInetHttpInfo, riid)) { IWinInetHttpInfo *http_info; HRESULT hres; TRACE("(%p)->(IID_IWinInetHttpInfo %p)\n", This, ppv); if(!This->protocol->wininet_info) return E_NOINTERFACE; hres = IWinInetInfo_QueryInterface(This->protocol->wininet_info, &IID_IWinInetHttpInfo, (void**)&http_info); if(FAILED(hres)) return E_NOINTERFACE; IWinInetHttpInfo_Release(http_info); *ppv = &This->IWinInetHttpInfo_iface; } if(*ppv) { IBinding_AddRef(&This->IBinding_iface); return S_OK; } WARN("Unsupported interface %s\n", debugstr_guid(riid)); return E_NOINTERFACE; }
static ULONG WINAPI XMLView_Binding_Release(IBinding *iface) { Binding *This = impl_from_IBinding(iface); ULONG ref = InterlockedDecrement(&This->ref); TRACE("(%p)->(%d)\n", This, ref); if(!ref) { IBinding_Release(This->binding); heap_free(This); } return ref; }
static HRESULT WINAPI XMLView_Binding_QueryInterface( IBinding *iface, REFIID riid, void **ppvObject) { Binding *This = impl_from_IBinding(iface); TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject); if(IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IBinding)) { *ppvObject = iface; IBinding_AddRef(iface); return S_OK; } *ppvObject = NULL; return E_NOINTERFACE; }
static HRESULT WINAPI Binding_Abort(IBinding *iface) { Binding *This = impl_from_IBinding(iface); HRESULT hres; TRACE("(%p)\n", This); if(This->state & BINDING_ABORTED) return E_FAIL; hres = IInternetProtocolEx_Abort(&This->protocol->IInternetProtocolEx_iface, E_ABORT, ERROR_SUCCESS); if(FAILED(hres)) return hres; This->state |= BINDING_ABORTED; return S_OK; }
static Binding *get_bctx_binding(IBindCtx *bctx) { IBinding *binding; IUnknown *unk; HRESULT hres; hres = IBindCtx_GetObjectParam(bctx, cbinding_contextW, &unk); if(FAILED(hres)) return NULL; hres = IUnknown_QueryInterface(unk, &IID_IBinding, (void*)&binding); IUnknown_Release(unk); if(FAILED(hres)) return NULL; if (binding->lpVtbl != &BindingVtbl) return NULL; return impl_from_IBinding(binding); }
static ULONG WINAPI Binding_Release(IBinding *iface) { Binding *This = impl_from_IBinding(iface); LONG ref = InterlockedDecrement(&This->ref); TRACE("(%p) ref=%d\n", This, ref); if(!ref) { if(This->notif_hwnd) release_notif_hwnd(This->notif_hwnd); if(This->mon) IMoniker_Release(This->mon); if(This->callback) IBindStatusCallback_Release(This->callback); if(This->protocol) IInternetProtocolEx_Release(&This->protocol->IInternetProtocolEx_iface); if(This->service_provider) IServiceProvider_Release(This->service_provider); if(This->stgmed_buf) IUnknown_Release(&This->stgmed_buf->IUnknown_iface); if(This->stgmed_obj) This->stgmed_obj->vtbl->release(This->stgmed_obj); if(This->obj) IUnknown_Release(This->obj); if(This->bctx) IBindCtx_Release(This->bctx); ReleaseBindInfo(&This->bindinfo); This->section.DebugInfo->Spare[0] = 0; DeleteCriticalSection(&This->section); SysFreeString(This->url); heap_free(This->mime); heap_free(This->redirect_url); heap_free(This); URLMON_UnlockModule(); } return ref; }
static HRESULT WINAPI XMLView_Binding_Resume(IBinding *iface) { Binding *This = impl_from_IBinding(iface); FIXME("(%p)\n", This); return E_NOTIMPL; }
static HRESULT WINAPI Binding_GetPriority(IBinding *iface, LONG *pnPriority) { Binding *This = impl_from_IBinding(iface); FIXME("(%p)->(%p)\n", This, pnPriority); return E_NOTIMPL; }
static HRESULT WINAPI Binding_Suspend(IBinding *iface) { Binding *This = impl_from_IBinding(iface); FIXME("(%p)\n", This); return E_NOTIMPL; }