urlmon: Return IClassFactory in get_protocol_handler and fix get_protocol.
This commit is contained in:
parent
4ca7a064fa
commit
21621b2856
|
@ -929,7 +929,6 @@ static HRESULT get_callback(IBindCtx *pbc, IBindStatusCallback **callback)
|
||||||
|
|
||||||
static HRESULT get_protocol(Binding *This, LPCWSTR url)
|
static HRESULT get_protocol(Binding *This, LPCWSTR url)
|
||||||
{
|
{
|
||||||
IUnknown *unk = NULL;
|
|
||||||
IClassFactory *cf = NULL;
|
IClassFactory *cf = NULL;
|
||||||
HRESULT hres;
|
HRESULT hres;
|
||||||
|
|
||||||
|
@ -945,12 +944,7 @@ static HRESULT get_protocol(Binding *This, LPCWSTR url)
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
hres = get_protocol_handler(url, &unk);
|
hres = get_protocol_handler(url, &cf);
|
||||||
if(FAILED(hres))
|
|
||||||
return hres;
|
|
||||||
|
|
||||||
hres = IUnknown_QueryInterface(unk, &IID_IClassFactory, (void**)&cf);
|
|
||||||
IUnknown_Release(unk);
|
|
||||||
if(FAILED(hres))
|
if(FAILED(hres))
|
||||||
return hres;
|
return hres;
|
||||||
|
|
||||||
|
|
|
@ -130,9 +130,10 @@ IInternetProtocolInfo *get_protocol_info(LPCWSTR url)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT get_protocol_handler(LPCWSTR url, IUnknown **ret)
|
HRESULT get_protocol_handler(LPCWSTR url, IClassFactory **ret)
|
||||||
{
|
{
|
||||||
IClassFactory *cf;
|
IClassFactory *cf;
|
||||||
|
IUnknown *unk;
|
||||||
WCHAR schema[64];
|
WCHAR schema[64];
|
||||||
DWORD schema_len;
|
DWORD schema_len;
|
||||||
HRESULT hres;
|
HRESULT hres;
|
||||||
|
@ -144,12 +145,17 @@ HRESULT get_protocol_handler(LPCWSTR url, IUnknown **ret)
|
||||||
|
|
||||||
cf = find_name_space(schema);
|
cf = find_name_space(schema);
|
||||||
if(cf) {
|
if(cf) {
|
||||||
hres = IClassFactory_CreateInstance(cf, NULL, &IID_IUnknown, (void**)ret);
|
*ret = cf;
|
||||||
if(SUCCEEDED(hres))
|
return S_OK;
|
||||||
return hres;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return get_protocol_iface(schema, schema_len, ret);
|
hres = get_protocol_iface(schema, schema_len, &unk);
|
||||||
|
if(FAILED(hres))
|
||||||
|
return hres;
|
||||||
|
|
||||||
|
hres = IUnknown_QueryInterface(unk, &IID_IClassFactory, (void**)ret);
|
||||||
|
IUnknown_Release(unk);
|
||||||
|
return hres;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI InternetSession_QueryInterface(IInternetSession *iface,
|
static HRESULT WINAPI InternetSession_QueryInterface(IInternetSession *iface,
|
||||||
|
|
|
@ -55,7 +55,7 @@ HRESULT UMCreateStreamOnCacheFile(LPCWSTR pszURL, DWORD dwSize, LPWSTR pszFileNa
|
||||||
void UMCloseCacheFileStream(IUMCacheStream *pstr);
|
void UMCloseCacheFileStream(IUMCacheStream *pstr);
|
||||||
|
|
||||||
IInternetProtocolInfo *get_protocol_info(LPCWSTR url);
|
IInternetProtocolInfo *get_protocol_info(LPCWSTR url);
|
||||||
HRESULT get_protocol_handler(LPCWSTR url, IUnknown **ret);
|
HRESULT get_protocol_handler(LPCWSTR url, IClassFactory **ret);
|
||||||
|
|
||||||
HRESULT start_binding(LPCWSTR url, IBindCtx *pbc, REFIID riid, void **ppv);
|
HRESULT start_binding(LPCWSTR url, IBindCtx *pbc, REFIID riid, void **ppv);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue