static HRESULT WINAPI BindInfo_GetBindString(IInternetBindInfo *iface, ULONG ulStringType, LPOLESTR *ppwzStr, ULONG cEl, ULONG *pcElFetched) { BindProtocol *This = impl_from_IInternetBindInfo(iface); TRACE("(%p)->(%d %p %d %p)\n", This, ulStringType, ppwzStr, cEl, pcElFetched); return IInternetBindInfo_GetBindString(This->bind_info, ulStringType, ppwzStr, cEl, pcElFetched); }
static HRESULT WINAPI InternetBindInfo_GetBindString(IInternetBindInfo *iface, ULONG ulStringType, LPOLESTR *ppwzStr, ULONG cEl, ULONG *pcElFetched) { Binding *This = impl_from_IInternetBindInfo(iface); TRACE("(%p)->(%d %p %d %p)\n", This, ulStringType, ppwzStr, cEl, pcElFetched); switch(ulStringType) { case BINDSTRING_ACCEPT_MIMES: { static const WCHAR wszMimes[] = {'*','/','*',0}; if(!ppwzStr || !pcElFetched) return E_INVALIDARG; ppwzStr[0] = CoTaskMemAlloc(sizeof(wszMimes)); memcpy(ppwzStr[0], wszMimes, sizeof(wszMimes)); *pcElFetched = 1; return S_OK; } case BINDSTRING_USER_AGENT: { IInternetBindInfo *bindinfo = NULL; HRESULT hres; hres = IBindStatusCallback_QueryInterface(This->callback, &IID_IInternetBindInfo, (void**)&bindinfo); if(FAILED(hres)) return hres; hres = IInternetBindInfo_GetBindString(bindinfo, ulStringType, ppwzStr, cEl, pcElFetched); IInternetBindInfo_Release(bindinfo); return hres; } case BINDSTRING_URL: { DWORD size = (SysStringLen(This->url)+1) * sizeof(WCHAR); if(!ppwzStr || !pcElFetched) return E_INVALIDARG; *ppwzStr = CoTaskMemAlloc(size); memcpy(*ppwzStr, This->url, size); *pcElFetched = 1; return S_OK; } } FIXME("not supported string type %d\n", ulStringType); return E_NOTIMPL; }
static HRESULT WINAPI BindInfo_GetBindInfo(IInternetBindInfo *iface, DWORD *grfBINDF, BINDINFO *pbindinfo) { BindProtocol *This = impl_from_IInternetBindInfo(iface); HRESULT hres; TRACE("(%p)->(%p %p)\n", This, grfBINDF, pbindinfo); hres = IInternetBindInfo_GetBindInfo(This->bind_info, grfBINDF, pbindinfo); if(FAILED(hres)) { WARN("GetBindInfo failed: %08x\n", hres); return hres; } *grfBINDF |= BINDF_FROMURLMON; return hres; }
static HRESULT WINAPI InternetBindInfo_GetBindInfo(IInternetBindInfo *iface, DWORD *grfBINDF, BINDINFO *pbindinfo) { Binding *This = impl_from_IInternetBindInfo(iface); TRACE("(%p)->(%p %p)\n", This, grfBINDF, pbindinfo); *grfBINDF = This->bindf; *pbindinfo = This->bindinfo; if(pbindinfo->szExtraInfo || pbindinfo->szCustomVerb) FIXME("copy strings\n"); if(pbindinfo->stgmedData.pUnkForRelease) IUnknown_AddRef(pbindinfo->stgmedData.pUnkForRelease); if(pbindinfo->pUnk) IUnknown_AddRef(pbindinfo->pUnk); return S_OK; }
static ULONG WINAPI BindInfo_Release(IInternetBindInfo *iface) { BindProtocol *This = impl_from_IInternetBindInfo(iface); return IInternetProtocolEx_Release(&This->IInternetProtocolEx_iface); }
static HRESULT WINAPI BindInfo_QueryInterface(IInternetBindInfo *iface, REFIID riid, void **ppv) { BindProtocol *This = impl_from_IInternetBindInfo(iface); return IInternetProtocolEx_QueryInterface(&This->IInternetProtocolEx_iface, riid, ppv); }
static ULONG WINAPI InternetBindInfo_Release(IInternetBindInfo *iface) { Binding *This = impl_from_IInternetBindInfo(iface); return IBinding_Release(&This->IBinding_iface); }
static HRESULT WINAPI InternetBindInfo_QueryInterface(IInternetBindInfo *iface, REFIID riid, void **ppv) { Binding *This = impl_from_IInternetBindInfo(iface); return IBinding_QueryInterface(&This->IBinding_iface, riid, ppv); }