Jacek Caban : urlmon: Query service provider for IInternetProtocol.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Jan 5 10:53:56 CST 2006
Module: wine
Branch: refs/heads/master
Commit: 6744b9b4682b2f499f52242ce3cec627736e175d
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=6744b9b4682b2f499f52242ce3cec627736e175d
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Jan 5 13:42:32 2006 +0100
urlmon: Query service provider for IInternetProtocol.
---
dlls/urlmon/binding.c | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/dlls/urlmon/binding.c b/dlls/urlmon/binding.c
index c590717..46ced83 100644
--- a/dlls/urlmon/binding.c
+++ b/dlls/urlmon/binding.c
@@ -44,6 +44,7 @@ typedef struct {
IBindStatusCallback *callback;
IInternetProtocol *protocol;
+ IServiceProvider *service_provider;
IStream *stream;
BINDINFO bindinfo;
@@ -112,6 +113,8 @@ static ULONG WINAPI Binding_Release(IBin
IBindStatusCallback_Release(This->callback);
if(This->protocol)
IInternetProtocol_Release(This->protocol);
+ if(This->service_provider)
+ IServiceProvider_Release(This->service_provider);
if(This->stream)
IStream_Release(This->stream);
@@ -459,6 +462,13 @@ static HRESULT get_protocol(Binding *Thi
if(SUCCEEDED(hres))
return S_OK;
+ if(This->service_provider) {
+ hres = IServiceProvider_QueryService(This->service_provider, &IID_IInternetProtocol,
+ &IID_IInternetProtocol, (void**)&This->protocol);
+ if(SUCCEEDED(hres))
+ return S_OK;
+ }
+
hres = get_protocol_iface(url, &unk);
if(FAILED(hres))
return hres;
@@ -498,6 +508,7 @@ static HRESULT Binding_Create(LPCWSTR ur
ret->callback = NULL;
ret->protocol = NULL;
+ ret->service_provider = NULL;
ret->stream = NULL;
ret->mime = NULL;
ret->url = NULL;
@@ -513,6 +524,9 @@ static HRESULT Binding_Create(LPCWSTR ur
return hres;
}
+ IBindStatusCallback_QueryInterface(ret->callback, &IID_IServiceProvider,
+ (void**)&ret->service_provider);
+
hres = get_protocol(ret, url);
if(FAILED(hres)) {
WARN("Could not get protocol handler\n");
More information about the wine-cvs
mailing list