static HRESULT WINAPI DownloadBSC_QueryInterface(IBindStatusCallback *iface, REFIID riid, void **ppv) { DownloadBSC *This = STATUSCLB_THIS(iface); *ppv = NULL; if(IsEqualGUID(&IID_IUnknown, riid)) { TRACE("(%p)->(IID_IUnknown, %p)\n", This, ppv); *ppv = STATUSCLB(This); }else if(IsEqualGUID(&IID_IBindStatusCallback, riid)) { TRACE("(%p)->(IID_IBindStatusCallback, %p)\n", This, ppv); *ppv = STATUSCLB(This); }else if(IsEqualGUID(&IID_IServiceProvider, riid)) { TRACE("(%p)->(IID_IServiceProvider, %p)\n", This, ppv); *ppv = SERVPROV(This); } if(*ppv) { IBindStatusCallback_AddRef((IUnknown*)*ppv); return S_OK; } TRACE("Unsupported riid = %s\n", debugstr_guid(riid)); return E_NOINTERFACE; }
static HRESULT WINAPI DownloadBSC_OnObjectAvailable(IBindStatusCallback *iface, REFIID riid, IUnknown *punk) { DownloadBSC *This = STATUSCLB_THIS(iface); FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), punk); return E_NOTIMPL; }
static HRESULT WINAPI DownloadBSC_OnProgress(IBindStatusCallback *iface, ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText) { DownloadBSC *This = STATUSCLB_THIS(iface); HRESULT hres = S_OK; TRACE("%p)->(%u %u %u %s)\n", This, ulProgress, ulProgressMax, ulStatusCode, debugstr_w(szStatusText)); switch(ulStatusCode) { case BINDSTATUS_CONNECTING: case BINDSTATUS_BEGINDOWNLOADDATA: case BINDSTATUS_DOWNLOADINGDATA: case BINDSTATUS_ENDDOWNLOADDATA: case BINDSTATUS_SENDINGREQUEST: case BINDSTATUS_MIMETYPEAVAILABLE: hres = on_progress(This, ulProgress, ulProgressMax, ulStatusCode, szStatusText); break; case BINDSTATUS_CACHEFILENAMEAVAILABLE: hres = on_progress(This, ulProgress, ulProgressMax, ulStatusCode, szStatusText); This->cache_file = heap_strdupW(szStatusText); break; case BINDSTATUS_FINDINGRESOURCE: /* FIXME */ break; default: FIXME("Unsupported status %u\n", ulStatusCode); } return hres; }
static HRESULT WINAPI BindStatusCallback_OnLowResource(IBindStatusCallbackEx *iface, DWORD reserved) { BindStatusCallback *This = STATUSCLB_THIS(iface); TRACE("(%p)->(%d)\n", This, reserved); return IBindStatusCallback_OnLowResource(This->callback, reserved); }
static HRESULT WINAPI BindStatusCallback_GetPriority(IBindStatusCallbackEx *iface, LONG *pnPriority) { BindStatusCallback *This = STATUSCLB_THIS(iface); TRACE("(%p)->(%p)\n", This, pnPriority); return IBindStatusCallback_GetPriority(This->callback, pnPriority); }
static HRESULT WINAPI DownloadBSC_OnDataAvailable(IBindStatusCallback *iface, DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed) { DownloadBSC *This = STATUSCLB_THIS(iface); TRACE("(%p)->(%08x %d %p %p)\n", This, grfBSCF, dwSize, pformatetc, pstgmed); return S_OK; }
static ULONG WINAPI DownloadBSC_AddRef(IBindStatusCallback *iface) { DownloadBSC *This = STATUSCLB_THIS(iface); LONG ref = InterlockedIncrement(&This->ref); TRACE("(%p) ref = %d\n", This, ref); return ref; }
static HRESULT WINAPI BindStatusCallback_OnObjectAvailable(IBindStatusCallbackEx *iface, REFIID riid, IUnknown *punk) { BindStatusCallback *This = STATUSCLB_THIS(iface); TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), punk); return IBindStatusCallback_OnObjectAvailable(This->callback, riid, punk); }
static HRESULT WINAPI BindStatusCallback_OnStopBinding(IBindStatusCallbackEx *iface, HRESULT hresult, LPCWSTR szError) { BindStatusCallback *This = STATUSCLB_THIS(iface); TRACE("(%p)->(%08x %s)\n", This, hresult, debugstr_w(szError)); return IBindStatusCallback_OnStopBinding(This->callback, hresult, szError); }
static HRESULT WINAPI BindStatusCallback_OnStartBinding(IBindStatusCallbackEx *iface, DWORD dwReserved, IBinding *pbind) { BindStatusCallback *This = STATUSCLB_THIS(iface); TRACE("(%p)->(%d %p)\n", This, dwReserved, pbind); return IBindStatusCallback_OnStartBinding(This->callback, 0xff, pbind); }
static HRESULT WINAPI BindStatusCallback_GetBindInfo(IBindStatusCallback *iface, DWORD *grfBINDF, BINDINFO *pbindinfo) { BindStatusCallback *This = STATUSCLB_THIS(iface); TRACE("(%p)->(%p %p)\n", This, grfBINDF, pbindinfo); return IBindStatusCallback_GetBindInfo(This->callback, grfBINDF, pbindinfo); }
static HRESULT WINAPI BindStatusCallback_OnProgress(IBindStatusCallbackEx *iface, ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText) { BindStatusCallback *This = STATUSCLB_THIS(iface); TRACE("%p)->(%u %u %u %s)\n", This, ulProgress, ulProgressMax, ulStatusCode, debugstr_w(szStatusText)); return IBindStatusCallback_OnProgress(This->callback, ulProgress, ulProgressMax, ulStatusCode, szStatusText); }
static HRESULT WINAPI DownloadBSC_OnStartBinding(IBindStatusCallback *iface, DWORD dwReserved, IBinding *pbind) { DownloadBSC *This = STATUSCLB_THIS(iface); TRACE("(%p)->(%d %p)\n", This, dwReserved, pbind); if(This->callback) IBindStatusCallback_OnStartBinding(This->callback, dwReserved, pbind); return S_OK; }
static ULONG WINAPI BindStatusCallback_Release(IBindStatusCallbackEx *iface) { BindStatusCallback *This = STATUSCLB_THIS(iface); LONG ref = InterlockedDecrement(&This->ref); TRACE("(%p) ref = %d\n", This, ref); if(!ref) { if(This->serv_prov) IServiceProvider_Release(This->serv_prov); IBindStatusCallback_Release(This->callback); heap_free(This); } return ref; }
static ULONG WINAPI DownloadBSC_Release(IBindStatusCallback *iface) { DownloadBSC *This = STATUSCLB_THIS(iface); LONG ref = InterlockedDecrement(&This->ref); TRACE("(%p) ref = %d\n", This, ref); if(!ref) { if(This->callback) IBindStatusCallback_Release(This->callback); heap_free(This->file_name); heap_free(This->cache_file); heap_free(This); } return ref; }
static HRESULT WINAPI BindStatusCallback_GetBindInfoEx(IBindStatusCallbackEx *iface, DWORD *grfBINDF, BINDINFO *pbindinfo, DWORD *grfBINDF2, DWORD *pdwReserved) { BindStatusCallback *This = STATUSCLB_THIS(iface); IBindStatusCallbackEx *bscex; HRESULT hres; TRACE("(%p)->(%p %p %p %p)\n", This, grfBINDF, pbindinfo, grfBINDF2, pdwReserved); hres = IBindStatusCallback_QueryInterface(This->callback, &IID_IBindStatusCallbackEx, (void**)&bscex); if(SUCCEEDED(hres)) { hres = IBindStatusCallbackEx_GetBindInfoEx(bscex, grfBINDF, pbindinfo, grfBINDF2, pdwReserved); IBindStatusCallbackEx_Release(bscex); }else { hres = IBindStatusCallback_GetBindInfo(This->callback, grfBINDF, pbindinfo); } return hres; }
static HRESULT WINAPI BindStatusCallback_QueryInterface(IBindStatusCallbackEx *iface, REFIID riid, void **ppv) { BindStatusCallback *This = STATUSCLB_THIS(iface); *ppv = NULL; if(IsEqualGUID(&IID_IUnknown, riid)) { TRACE("(%p)->(IID_IUnknown, %p)\n", This, ppv); *ppv = STATUSCLB(This); }else if(IsEqualGUID(&IID_IBindStatusCallback, riid)) { TRACE("(%p)->(IID_IBindStatusCallback, %p)\n", This, ppv); *ppv = STATUSCLB(This); }else if(IsEqualGUID(&IID_IBindStatusCallbackEx, riid)) { TRACE("(%p)->(IID_IBindStatusCallback, %p)\n", This, ppv); *ppv = STATUSCLBEX(This); }else if(IsEqualGUID(&IID_IBindStatusCallbackHolder, riid)) { TRACE("(%p)->(IID_IBindStatusCallbackHolder, %p)\n", This, ppv); *ppv = This; }else if(IsEqualGUID(&IID_IServiceProvider, riid)) { TRACE("(%p)->(IID_IServiceProvider, %p)\n", This, ppv); *ppv = SERVPROV(This); }else if(IsEqualGUID(&IID_IHttpNegotiate, riid)) { TRACE("(%p)->(IID_IHttpNegotiate, %p)\n", This, ppv); *ppv = HTTPNEG2(This); }else if(IsEqualGUID(&IID_IHttpNegotiate2, riid)) { TRACE("(%p)->(IID_IHttpNegotiate2, %p)\n", This, ppv); *ppv = HTTPNEG2(This); }else if(IsEqualGUID(&IID_IAuthenticate, riid)) { TRACE("(%p)->(IID_IAuthenticate, %p)\n", This, ppv); *ppv = AUTHENTICATE(This); } if(*ppv) { IBindStatusCallback_AddRef((IUnknown*)*ppv); return S_OK; } TRACE("Unsupported riid = %s\n", debugstr_guid(riid)); return E_NOINTERFACE; }
static HRESULT WINAPI DownloadBSC_GetBindInfo(IBindStatusCallback *iface, DWORD *grfBINDF, BINDINFO *pbindinfo) { DownloadBSC *This = STATUSCLB_THIS(iface); DWORD bindf = 0; TRACE("(%p)->(%p %p)\n", This, grfBINDF, pbindinfo); if(This->callback) { BINDINFO bindinfo; HRESULT hres; memset(&bindinfo, 0, sizeof(bindinfo)); bindinfo.cbSize = sizeof(bindinfo); hres = IBindStatusCallback_GetBindInfo(This->callback, &bindf, &bindinfo); if(SUCCEEDED(hres)) ReleaseBindInfo(&bindinfo); } *grfBINDF = BINDF_PULLDATA | BINDF_NEEDFILE | (bindf & BINDF_ENFORCERESTRICTED); return S_OK; }
static HRESULT WINAPI DownloadBSC_OnStopBinding(IBindStatusCallback *iface, HRESULT hresult, LPCWSTR szError) { DownloadBSC *This = STATUSCLB_THIS(iface); TRACE("(%p)->(%08x %s)\n", This, hresult, debugstr_w(szError)); if(This->file_name) { if(This->cache_file) { BOOL b; b = CopyFileW(This->cache_file, This->file_name, FALSE); if(!b) FIXME("CopyFile failed: %u\n", GetLastError()); }else { FIXME("No cache file\n"); } } if(This->callback) IBindStatusCallback_OnStopBinding(This->callback, hresult, szError); return S_OK; }
static HRESULT WINAPI DownloadBSC_GetPriority(IBindStatusCallback *iface, LONG *pnPriority) { DownloadBSC *This = STATUSCLB_THIS(iface); FIXME("(%p)->(%p)\n", This, pnPriority); return E_NOTIMPL; }
static HRESULT WINAPI DownloadBSC_OnLowResource(IBindStatusCallback *iface, DWORD reserved) { DownloadBSC *This = STATUSCLB_THIS(iface); FIXME("(%p)->(%d)\n", This, reserved); return E_NOTIMPL; }