diff --git a/dlls/urlmon/binding.c b/dlls/urlmon/binding.c index 99aaf02ce53..c27213a1145 100644 --- a/dlls/urlmon/binding.c +++ b/dlls/urlmon/binding.c @@ -42,7 +42,7 @@ typedef struct { LONG ref; - IInternetProtocol *protocol; + IInternetProtocolEx *protocol; BYTE buf[1024*8]; DWORD size; @@ -88,7 +88,7 @@ struct Binding { LONG ref; IBindStatusCallback *callback; - IInternetProtocol *protocol; + IInternetProtocolEx *protocol; IServiceProvider *service_provider; stgmed_buf_t *stgmed_buf; @@ -427,7 +427,7 @@ static const IUnknownVtbl StgMedUnkVtbl = { StgMedUnk_Release }; -static stgmed_buf_t *create_stgmed_buf(IInternetProtocol *protocol) +static stgmed_buf_t *create_stgmed_buf(IInternetProtocolEx *protocol) { stgmed_buf_t *ret = heap_alloc(sizeof(*ret)); @@ -1487,7 +1487,7 @@ static HRESULT Binding_Create(IMoniker *mon, Binding *binding_ctx, LPCWSTR url, ret->protocol = binding_ctx->protocol; IInternetProtocol_AddRef(ret->protocol); }else { - hres = create_binding_protocol(url, TRUE, &ret->protocol); + hres = create_binding_protocol(TRUE, &ret->protocol); if(FAILED(hres)) { WARN("Could not get protocol handler\n"); IBinding_Release(BINDING(ret)); diff --git a/dlls/urlmon/bindprot.c b/dlls/urlmon/bindprot.c index 2e103e38338..4acef409621 100644 --- a/dlls/urlmon/bindprot.c +++ b/dlls/urlmon/bindprot.c @@ -388,7 +388,7 @@ static ULONG WINAPI BindProtocol_Release(IInternetProtocolEx *iface) if(This->uri) IUri_Release(This->uri); - set_binding_sink((IInternetProtocol*)PROTOCOLEX(This), NULL, NULL); + set_binding_sink(PROTOCOLEX(This), NULL, NULL); if(This->notif_hwnd) release_notif_hwnd(This->notif_hwnd); @@ -581,7 +581,7 @@ static HRESULT WINAPI BindProtocol_StartEx(IInternetProtocolEx *iface, IUri *pUr if(urlmon_protocol) IInternetProtocol_QueryInterface(protocol, &IID_IWinInetInfo, (void**)&This->wininet_info); - set_binding_sink((IInternetProtocol*)PROTOCOLEX(This), pOIProtSink, pOIBindInfo); + set_binding_sink(PROTOCOLEX(This), pOIProtSink, pOIBindInfo); hres = IInternetProtocol_QueryInterface(protocol, &IID_IInternetPriority, (void**)&priority); if(SUCCEEDED(hres)) { @@ -607,7 +607,7 @@ static HRESULT WINAPI BindProtocol_StartEx(IInternetProtocolEx *iface, IUri *pUr return hres; } -void set_binding_sink(IInternetProtocol *bind_protocol, IInternetProtocolSink *sink, IInternetBindInfo *bind_info) +void set_binding_sink(IInternetProtocolEx *bind_protocol, IInternetProtocolSink *sink, IInternetBindInfo *bind_info) { BindProtocol *This = PROTOCOL_THIS(bind_protocol); IInternetProtocolSink *prev_sink; @@ -632,7 +632,7 @@ void set_binding_sink(IInternetProtocol *bind_protocol, IInternetProtocolSink *s IInternetBindInfo_Release(bind_info); } -IWinInetInfo *get_wininet_info(IInternetProtocol *bind_protocol) +IWinInetInfo *get_wininet_info(IInternetProtocolEx *bind_protocol) { BindProtocol *This = PROTOCOL_THIS(bind_protocol); @@ -728,7 +728,7 @@ static HRESULT WINAPI ProtocolHandler_Terminate(IInternetProtocol *iface, DWORD This->filter_proxy = NULL; } - set_binding_sink((IInternetProtocol*)PROTOCOLEX(This), NULL, NULL); + set_binding_sink(PROTOCOLEX(This), NULL, NULL); if(This->bind_info) { IInternetBindInfo_Release(This->bind_info); @@ -1340,7 +1340,7 @@ static const IServiceProviderVtbl ServiceProviderVtbl = { BPServiceProvider_QueryService }; -HRESULT create_binding_protocol(LPCWSTR url, BOOL from_urlmon, IInternetProtocol **protocol) +HRESULT create_binding_protocol(BOOL from_urlmon, IInternetProtocolEx **protocol) { BindProtocol *ret = heap_alloc_zero(sizeof(BindProtocol)); @@ -1361,6 +1361,6 @@ HRESULT create_binding_protocol(LPCWSTR url, BOOL from_urlmon, IInternetProtocol URLMON_LockModule(); - *protocol = (IInternetProtocol*)PROTOCOLEX(ret); + *protocol = PROTOCOLEX(ret); return S_OK; } diff --git a/dlls/urlmon/session.c b/dlls/urlmon/session.c index ef1881c34d4..4c9281aa0c2 100644 --- a/dlls/urlmon/session.c +++ b/dlls/urlmon/session.c @@ -421,13 +421,21 @@ static HRESULT WINAPI InternetSession_CreateBinding(IInternetSession *iface, LPBC pBC, LPCWSTR szUrl, IUnknown *pUnkOuter, IUnknown **ppUnk, IInternetProtocol **ppOInetProt, DWORD dwOption) { + IInternetProtocolEx *protocol; + HRESULT hres; + TRACE("(%p %s %p %p %p %08x)\n", pBC, debugstr_w(szUrl), pUnkOuter, ppUnk, ppOInetProt, dwOption); if(pBC || pUnkOuter || ppUnk || dwOption) FIXME("Unsupported arguments\n"); - return create_binding_protocol(szUrl, FALSE, ppOInetProt); + hres = create_binding_protocol(FALSE, &protocol); + if(FAILED(hres)) + return hres; + + *ppOInetProt = (IInternetProtocol*)protocol; + return S_OK; } static HRESULT WINAPI InternetSession_SetSessionOption(IInternetSession *iface, diff --git a/dlls/urlmon/urlmon_main.h b/dlls/urlmon/urlmon_main.h index 215a868c9fa..239182e698a 100644 --- a/dlls/urlmon/urlmon_main.h +++ b/dlls/urlmon/urlmon_main.h @@ -77,9 +77,9 @@ void free_session(void); HRESULT bind_to_storage(LPCWSTR url, IBindCtx *pbc, REFIID riid, void **ppv); HRESULT bind_to_object(IMoniker *mon, LPCWSTR url, IBindCtx *pbc, REFIID riid, void **ppv); -HRESULT create_binding_protocol(LPCWSTR url, BOOL from_urlmon, IInternetProtocol **protocol); -void set_binding_sink(IInternetProtocol *bind_protocol, IInternetProtocolSink *sink, IInternetBindInfo *bind_info); -IWinInetInfo *get_wininet_info(IInternetProtocol*); +HRESULT create_binding_protocol(BOOL,IInternetProtocolEx**); +void set_binding_sink(IInternetProtocolEx*,IInternetProtocolSink*,IInternetBindInfo*); +IWinInetInfo *get_wininet_info(IInternetProtocolEx*); HRESULT create_default_callback(IBindStatusCallback**); HRESULT wrap_callback(IBindStatusCallback*,IBindStatusCallback**);