mirror of
https://github.com/reactos/reactos.git
synced 2024-12-31 19:42:51 +00:00
[URLMON]
sync urlmon to wine 1.1.39 svn path=/trunk/; revision=45834
This commit is contained in:
parent
7473d1aab3
commit
266a9a6369
18 changed files with 813 additions and 38 deletions
|
@ -98,6 +98,7 @@ struct Binding {
|
|||
LPWSTR mime;
|
||||
UINT clipboard_format;
|
||||
LPWSTR url;
|
||||
LPWSTR redirect_url;
|
||||
IID iid;
|
||||
BOOL report_mime;
|
||||
DWORD state;
|
||||
|
@ -829,6 +830,7 @@ static ULONG WINAPI Binding_Release(IBinding *iface)
|
|||
This->section.DebugInfo->Spare[0] = 0;
|
||||
DeleteCriticalSection(&This->section);
|
||||
heap_free(This->mime);
|
||||
heap_free(This->redirect_url);
|
||||
heap_free(This->url);
|
||||
|
||||
heap_free(This);
|
||||
|
@ -967,6 +969,11 @@ static HRESULT WINAPI InternetProtocolSink_ReportProgress(IInternetProtocolSink
|
|||
case BINDSTATUS_CONNECTING:
|
||||
on_progress(This, 0, 0, BINDSTATUS_CONNECTING, szStatusText);
|
||||
break;
|
||||
case BINDSTATUS_REDIRECTING:
|
||||
heap_free(This->redirect_url);
|
||||
This->redirect_url = heap_strdupW(szStatusText);
|
||||
on_progress(This, 0, 0, BINDSTATUS_REDIRECTING, szStatusText);
|
||||
break;
|
||||
case BINDSTATUS_BEGINDOWNLOADDATA:
|
||||
fill_stgmed_buffer(This->stgmed_buf);
|
||||
break;
|
||||
|
@ -1474,6 +1481,8 @@ static HRESULT start_binding(IMoniker *mon, Binding *binding_ctx, LPCWSTR url, I
|
|||
|
||||
if(binding_ctx) {
|
||||
set_binding_sink(binding->protocol, PROTSINK(binding));
|
||||
if(binding_ctx->redirect_url)
|
||||
IBindStatusCallback_OnProgress(binding->callback, 0, 0, BINDSTATUS_REDIRECTING, binding_ctx->redirect_url);
|
||||
report_data(binding, 0, 0, 0);
|
||||
}else {
|
||||
hres = IInternetProtocol_Start(binding->protocol, url, PROTSINK(binding),
|
||||
|
|
|
@ -205,7 +205,7 @@ static void push_task(BindProtocol *This, task_header_t *task, task_proc_t proc)
|
|||
This->task_queue_tail = task;
|
||||
}else {
|
||||
This->task_queue_tail = This->task_queue_head = task;
|
||||
do_post = TRUE;
|
||||
do_post = !This->continue_call;
|
||||
}
|
||||
|
||||
LeaveCriticalSection(&This->section);
|
||||
|
@ -960,6 +960,7 @@ static void report_progress(BindProtocol *This, ULONG status_code, LPCWSTR statu
|
|||
switch(status_code) {
|
||||
case BINDSTATUS_FINDINGRESOURCE:
|
||||
case BINDSTATUS_CONNECTING:
|
||||
case BINDSTATUS_REDIRECTING:
|
||||
case BINDSTATUS_BEGINDOWNLOADDATA:
|
||||
case BINDSTATUS_SENDINGREQUEST:
|
||||
case BINDSTATUS_CACHEFILENAMEAVAILABLE:
|
||||
|
|
|
@ -140,6 +140,7 @@ static HRESULT WINAPI DownloadBSC_OnProgress(IBindStatusCallback *iface, ULONG u
|
|||
debugstr_w(szStatusText));
|
||||
|
||||
switch(ulStatusCode) {
|
||||
case BINDSTATUS_CONNECTING:
|
||||
case BINDSTATUS_BEGINDOWNLOADDATA:
|
||||
case BINDSTATUS_DOWNLOADINGDATA:
|
||||
case BINDSTATUS_ENDDOWNLOADDATA:
|
||||
|
@ -153,8 +154,7 @@ static HRESULT WINAPI DownloadBSC_OnProgress(IBindStatusCallback *iface, ULONG u
|
|||
This->cache_file = heap_strdupW(szStatusText);
|
||||
break;
|
||||
|
||||
case BINDSTATUS_FINDINGRESOURCE:
|
||||
case BINDSTATUS_CONNECTING:
|
||||
case BINDSTATUS_FINDINGRESOURCE: /* FIXME */
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
|
@ -17,11 +17,6 @@
|
|||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* TODO:
|
||||
* - Handle redirects as native.
|
||||
*/
|
||||
|
||||
#include "urlmon_main.h"
|
||||
#include "wininet.h"
|
||||
|
||||
|
@ -84,7 +79,7 @@ static HRESULT HttpProtocol_open_request(Protocol *prot, LPCWSTR url, DWORD requ
|
|||
URL_COMPONENTSW url_comp;
|
||||
BYTE security_id[512];
|
||||
DWORD len = 0;
|
||||
ULONG num = 0;
|
||||
ULONG num;
|
||||
BOOL res, b;
|
||||
HRESULT hres;
|
||||
|
||||
|
@ -95,7 +90,7 @@ static HRESULT HttpProtocol_open_request(Protocol *prot, LPCWSTR url, DWORD requ
|
|||
|
||||
memset(&url_comp, 0, sizeof(url_comp));
|
||||
url_comp.dwStructSize = sizeof(url_comp);
|
||||
url_comp.dwSchemeLength = url_comp.dwHostNameLength = url_comp.dwUrlPathLength =
|
||||
url_comp.dwSchemeLength = url_comp.dwHostNameLength = url_comp.dwUrlPathLength = url_comp.dwExtraInfoLength =
|
||||
url_comp.dwUserNameLength = url_comp.dwPasswordLength = 1;
|
||||
if (!InternetCrackUrlW(url, 0, 0, &url_comp))
|
||||
return MK_E_SYNTAX;
|
||||
|
@ -124,7 +119,12 @@ static HRESULT HttpProtocol_open_request(Protocol *prot, LPCWSTR url, DWORD requ
|
|||
}
|
||||
accept_mimes[num] = 0;
|
||||
|
||||
path = heap_strndupW(url_comp.lpszUrlPath, url_comp.dwUrlPathLength);
|
||||
path = heap_alloc((url_comp.dwUrlPathLength+url_comp.dwExtraInfoLength+1)*sizeof(WCHAR));
|
||||
if(url_comp.dwUrlPathLength)
|
||||
memcpy(path, url_comp.lpszUrlPath, url_comp.dwUrlPathLength*sizeof(WCHAR));
|
||||
if(url_comp.dwExtraInfoLength)
|
||||
memcpy(path+url_comp.dwUrlPathLength, url_comp.lpszExtraInfo, url_comp.dwExtraInfoLength*sizeof(WCHAR));
|
||||
path[url_comp.dwUrlPathLength+url_comp.dwExtraInfoLength] = 0;
|
||||
if(This->https)
|
||||
request_flags |= INTERNET_FLAG_SECURE;
|
||||
This->base.request = HttpOpenRequestW(This->base.connection,
|
||||
|
@ -132,8 +132,8 @@ static HRESULT HttpProtocol_open_request(Protocol *prot, LPCWSTR url, DWORD requ
|
|||
? wszBindVerb[This->base.bind_info.dwBindVerb] : This->base.bind_info.szCustomVerb,
|
||||
path, NULL, NULL, (LPCWSTR *)accept_mimes, request_flags, (DWORD_PTR)&This->base);
|
||||
heap_free(path);
|
||||
while (num<sizeof(accept_mimes)/sizeof(accept_mimes[0]) && accept_mimes[num])
|
||||
CoTaskMemFree(accept_mimes[num++]);
|
||||
while(num--)
|
||||
CoTaskMemFree(accept_mimes[num]);
|
||||
if (!This->base.request) {
|
||||
WARN("HttpOpenRequest failed: %d\n", GetLastError());
|
||||
return INET_E_RESOURCE_NOT_FOUND;
|
||||
|
@ -227,7 +227,7 @@ static HRESULT HttpProtocol_open_request(Protocol *prot, LPCWSTR url, DWORD requ
|
|||
static HRESULT HttpProtocol_start_downloading(Protocol *prot)
|
||||
{
|
||||
HttpProtocol *This = ASYNCPROTOCOL_THIS(prot);
|
||||
LPWSTR content_type = 0, content_length = 0;
|
||||
LPWSTR content_type, content_length, ranges;
|
||||
DWORD len = sizeof(DWORD);
|
||||
DWORD status_code;
|
||||
BOOL res;
|
||||
|
@ -258,8 +258,11 @@ static HRESULT HttpProtocol_start_downloading(Protocol *prot)
|
|||
WARN("HttpQueryInfo failed: %d\n", GetLastError());
|
||||
}
|
||||
|
||||
if(This->https)
|
||||
ranges = query_http_info(This, HTTP_QUERY_ACCEPT_RANGES);
|
||||
if(ranges) {
|
||||
IInternetProtocolSink_ReportProgress(This->base.protocol_sink, BINDSTATUS_ACCEPTRANGES, NULL);
|
||||
heap_free(ranges);
|
||||
}
|
||||
|
||||
content_type = query_http_info(This, HTTP_QUERY_CONTENT_TYPE);
|
||||
if(content_type) {
|
||||
|
|
|
@ -38,6 +38,9 @@ static HRESULT parse_schema(LPCWSTR url, DWORD flags, LPWSTR result, DWORD size,
|
|||
if(ptr)
|
||||
len = ptr-url;
|
||||
|
||||
if(rsize)
|
||||
*rsize = len;
|
||||
|
||||
if(len >= size)
|
||||
return E_POINTER;
|
||||
|
||||
|
@ -45,9 +48,6 @@ static HRESULT parse_schema(LPCWSTR url, DWORD flags, LPWSTR result, DWORD size,
|
|||
memcpy(result, url, len*sizeof(WCHAR));
|
||||
result[len] = 0;
|
||||
|
||||
if(rsize)
|
||||
*rsize = len;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
@ -170,6 +170,100 @@ static HRESULT parse_security_domain(LPCWSTR url, DWORD flags, LPWSTR result,
|
|||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT parse_domain(LPCWSTR url, DWORD flags, LPWSTR result,
|
||||
DWORD size, DWORD *rsize)
|
||||
{
|
||||
IInternetProtocolInfo *protocol_info;
|
||||
HRESULT hres;
|
||||
|
||||
TRACE("(%s %08x %p %d %p)\n", debugstr_w(url), flags, result, size, rsize);
|
||||
|
||||
protocol_info = get_protocol_info(url);
|
||||
|
||||
if(protocol_info) {
|
||||
hres = IInternetProtocolInfo_ParseUrl(protocol_info, url, PARSE_DOMAIN,
|
||||
flags, result, size, rsize, 0);
|
||||
IInternetProtocolInfo_Release(protocol_info);
|
||||
if(SUCCEEDED(hres))
|
||||
return hres;
|
||||
}
|
||||
|
||||
hres = UrlGetPartW(url, result, &size, URL_PART_HOSTNAME, flags);
|
||||
if(rsize)
|
||||
*rsize = size;
|
||||
|
||||
if(hres == E_POINTER)
|
||||
return S_FALSE;
|
||||
|
||||
if(FAILED(hres))
|
||||
return E_FAIL;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT parse_rootdocument(LPCWSTR url, DWORD flags, LPWSTR result,
|
||||
DWORD size, DWORD *rsize)
|
||||
{
|
||||
IInternetProtocolInfo *protocol_info;
|
||||
PARSEDURLW url_info;
|
||||
HRESULT hres;
|
||||
|
||||
TRACE("(%s %08x %p %d %p)\n", debugstr_w(url), flags, result, size, rsize);
|
||||
|
||||
protocol_info = get_protocol_info(url);
|
||||
|
||||
if(protocol_info) {
|
||||
hres = IInternetProtocolInfo_ParseUrl(protocol_info, url, PARSE_ROOTDOCUMENT,
|
||||
flags, result, size, rsize, 0);
|
||||
IInternetProtocolInfo_Release(protocol_info);
|
||||
if(SUCCEEDED(hres))
|
||||
return hres;
|
||||
}
|
||||
|
||||
url_info.cbSize = sizeof(url_info);
|
||||
if(FAILED(ParseURLW(url, &url_info)))
|
||||
return E_FAIL;
|
||||
|
||||
switch(url_info.nScheme) {
|
||||
case URL_SCHEME_FTP:
|
||||
case URL_SCHEME_HTTP:
|
||||
case URL_SCHEME_HTTPS:
|
||||
if(url_info.cchSuffix<3 || *(url_info.pszSuffix)!='/'
|
||||
|| *(url_info.pszSuffix+1)!='/')
|
||||
return E_FAIL;
|
||||
|
||||
if(size < url_info.cchProtocol+3) {
|
||||
size = 0;
|
||||
hres = UrlGetPartW(url, result, &size, URL_PART_HOSTNAME, flags);
|
||||
|
||||
if(rsize)
|
||||
*rsize = size+url_info.cchProtocol+3;
|
||||
|
||||
if(hres == E_POINTER)
|
||||
return S_FALSE;
|
||||
|
||||
return hres;
|
||||
}
|
||||
|
||||
size -= url_info.cchProtocol+3;
|
||||
hres = UrlGetPartW(url, result+url_info.cchProtocol+3,
|
||||
&size, URL_PART_HOSTNAME, flags);
|
||||
|
||||
if(hres == E_POINTER)
|
||||
return S_FALSE;
|
||||
|
||||
if(FAILED(hres))
|
||||
return E_FAIL;
|
||||
|
||||
if(rsize)
|
||||
*rsize = size+url_info.cchProtocol+3;
|
||||
|
||||
memcpy(result, url, (url_info.cchProtocol+3)*sizeof(WCHAR));
|
||||
return hres;
|
||||
default:
|
||||
return E_FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* CoInternetParseUrl (URLMON.@)
|
||||
*/
|
||||
|
@ -192,6 +286,10 @@ HRESULT WINAPI CoInternetParseUrl(LPCWSTR pwzUrl, PARSEACTION ParseAction, DWORD
|
|||
return parse_schema(pwzUrl, dwFlags, pszResult, cchResult, pcchResult);
|
||||
case PARSE_SECURITY_DOMAIN:
|
||||
return parse_security_domain(pwzUrl, dwFlags, pszResult, cchResult, pcchResult);
|
||||
case PARSE_DOMAIN:
|
||||
return parse_domain(pwzUrl, dwFlags, pszResult, cchResult, pcchResult);
|
||||
case PARSE_ROOTDOCUMENT:
|
||||
return parse_rootdocument(pwzUrl, dwFlags, pszResult, cchResult, pcchResult);
|
||||
default:
|
||||
FIXME("not supported action %d\n", ParseAction);
|
||||
}
|
||||
|
|
|
@ -151,6 +151,11 @@ static void WINAPI internet_status_callback(HINTERNET internet, DWORD_PTR contex
|
|||
report_progress(protocol, BINDSTATUS_SENDINGREQUEST, (LPWSTR)status_info);
|
||||
break;
|
||||
|
||||
case INTERNET_STATUS_REDIRECT:
|
||||
TRACE("%p INTERNET_STATUS_REDIRECT\n", protocol);
|
||||
report_progress(protocol, BINDSTATUS_REDIRECTING, (LPWSTR)status_info);
|
||||
break;
|
||||
|
||||
case INTERNET_STATUS_REQUEST_COMPLETE:
|
||||
request_complete(protocol, status_info);
|
||||
break;
|
||||
|
|
|
@ -495,6 +495,12 @@ static struct regsvr_coclass const coclass_list[] = {
|
|||
"urlmon.dll",
|
||||
"Both"
|
||||
},
|
||||
{ &CLSID_PSFactoryBuffer,
|
||||
"URLMoniker ProxyStub Factory",
|
||||
NULL,
|
||||
"urlmon.dll",
|
||||
"Apartment"
|
||||
},
|
||||
{ NULL } /* list terminator */
|
||||
};
|
||||
|
||||
|
@ -573,12 +579,14 @@ HRESULT WINAPI DllRegisterServer(void)
|
|||
|
||||
TRACE("\n");
|
||||
|
||||
hr = register_coclasses(coclass_list);
|
||||
if (SUCCEEDED(hr))
|
||||
hr = URLMON_DllRegisterServer();
|
||||
if(SUCCEEDED(hr))
|
||||
hr = register_coclasses(coclass_list);
|
||||
if(SUCCEEDED(hr))
|
||||
hr = register_interfaces(interface_list);
|
||||
if(FAILED(hr))
|
||||
return hr;
|
||||
return register_inf(TRUE);
|
||||
if(SUCCEEDED(hr))
|
||||
hr = register_inf(TRUE);
|
||||
return hr;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
|
@ -590,10 +598,12 @@ HRESULT WINAPI DllUnregisterServer(void)
|
|||
|
||||
TRACE("\n");
|
||||
|
||||
hr = unregister_coclasses(coclass_list);
|
||||
if (SUCCEEDED(hr))
|
||||
hr = URLMON_DllUnregisterServer();
|
||||
if(SUCCEEDED(hr))
|
||||
hr = unregister_coclasses(coclass_list);
|
||||
if(SUCCEEDED(hr))
|
||||
hr = unregister_interfaces(interface_list);
|
||||
if(FAILED(hr))
|
||||
return hr;
|
||||
return register_inf(FALSE);
|
||||
if(SUCCEEDED(hr))
|
||||
hr = register_inf(FALSE);
|
||||
return hr;
|
||||
}
|
||||
|
|
|
@ -147,12 +147,18 @@ static HRESULT map_url_to_zone(LPCWSTR url, DWORD *zone, LPWSTR *ret_url)
|
|||
DWORD size=0;
|
||||
HRESULT hres;
|
||||
|
||||
secur_url = heap_alloc(INTERNET_MAX_URL_LENGTH*sizeof(WCHAR));
|
||||
*zone = -1;
|
||||
|
||||
hres = CoInternetParseUrl(url, PARSE_SECURITY_URL, 0, secur_url, INTERNET_MAX_URL_LENGTH, &size, 0);
|
||||
if(hres != S_OK)
|
||||
strcpyW(secur_url, url);
|
||||
hres = CoInternetGetSecurityUrl(url, &secur_url, PSU_SECURITY_URL_ONLY, 0);
|
||||
if(hres != S_OK) {
|
||||
size = strlenW(url)*sizeof(WCHAR);
|
||||
|
||||
secur_url = heap_alloc(size);
|
||||
if(!secur_url)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
memcpy(secur_url, url, size);
|
||||
}
|
||||
|
||||
hres = CoInternetParseUrl(secur_url, PARSE_SCHEMA, 0, schema, sizeof(schema)/sizeof(WCHAR), &size, 0);
|
||||
if(FAILED(hres) || !*schema) {
|
||||
|
@ -1228,3 +1234,84 @@ HRESULT WINAPI CoInternetCreateZoneManager(IServiceProvider* pSP, IInternetZoneM
|
|||
TRACE("(%p %p %x)\n", pSP, ppZM, dwReserved);
|
||||
return ZoneMgrImpl_Construct(NULL, (void**)ppZM);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
* CoInternetGetSecurityUrl (URLMON.@)
|
||||
*/
|
||||
HRESULT WINAPI CoInternetGetSecurityUrl(LPCWSTR pwzUrl, LPWSTR *ppwzSecUrl, PSUACTION psuAction, DWORD dwReserved)
|
||||
{
|
||||
WCHAR buf1[INTERNET_MAX_URL_LENGTH], buf2[INTERNET_MAX_URL_LENGTH];
|
||||
LPWSTR url, domain;
|
||||
DWORD len;
|
||||
HRESULT hres;
|
||||
|
||||
TRACE("(%p,%p,%u,%u)\n", pwzUrl, ppwzSecUrl, psuAction, dwReserved);
|
||||
|
||||
url = buf1;
|
||||
domain = buf2;
|
||||
strcpyW(url, pwzUrl);
|
||||
|
||||
while(1) {
|
||||
hres = CoInternetParseUrl(url, PARSE_SECURITY_URL, 0, domain, INTERNET_MAX_URL_LENGTH, &len, 0);
|
||||
if(hres!=S_OK || !strcmpW(url, domain))
|
||||
break;
|
||||
|
||||
if(url == buf1) {
|
||||
url = buf2;
|
||||
domain = buf1;
|
||||
} else {
|
||||
url = buf1;
|
||||
domain = buf2;
|
||||
}
|
||||
}
|
||||
|
||||
if(psuAction==PSU_SECURITY_URL_ONLY) {
|
||||
len = lstrlenW(url)+1;
|
||||
*ppwzSecUrl = CoTaskMemAlloc(len*sizeof(WCHAR));
|
||||
if(!*ppwzSecUrl)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
memcpy(*ppwzSecUrl, url, len*sizeof(WCHAR));
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
hres = CoInternetParseUrl(url, PARSE_SECURITY_DOMAIN, 0, domain,
|
||||
INTERNET_MAX_URL_LENGTH, &len, 0);
|
||||
if(SUCCEEDED(hres)) {
|
||||
len++;
|
||||
*ppwzSecUrl = CoTaskMemAlloc(len*sizeof(WCHAR));
|
||||
if(!*ppwzSecUrl)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
memcpy(*ppwzSecUrl, domain, len*sizeof(WCHAR));
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
hres = CoInternetParseUrl(url, PARSE_ROOTDOCUMENT, 0, domain, 0, &len, 0);
|
||||
if(hres == S_FALSE) {
|
||||
hres = CoInternetParseUrl(url, PARSE_SCHEMA, 0, domain,
|
||||
INTERNET_MAX_URL_LENGTH, &len, 0);
|
||||
if(hres == S_OK) {
|
||||
domain[len] = ':';
|
||||
hres = CoInternetParseUrl(url, PARSE_DOMAIN, 0, domain+len+1,
|
||||
INTERNET_MAX_URL_LENGTH-len-1, &len, 0);
|
||||
if(hres == S_OK) {
|
||||
len = lstrlenW(domain)+1;
|
||||
*ppwzSecUrl = CoTaskMemAlloc(len*sizeof(WCHAR));
|
||||
if(!*ppwzSecUrl)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
memcpy(*ppwzSecUrl, domain, len*sizeof(WCHAR));
|
||||
return S_OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
len = lstrlenW(url)+1;
|
||||
*ppwzSecUrl = CoTaskMemAlloc(len*sizeof(WCHAR));
|
||||
if(!*ppwzSecUrl)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
memcpy(*ppwzSecUrl, url, len*sizeof(WCHAR));
|
||||
return S_OK;
|
||||
}
|
||||
|
|
302
reactos/dll/win32/urlmon/uri.c
Normal file
302
reactos/dll/win32/urlmon/uri.c
Normal file
|
@ -0,0 +1,302 @@
|
|||
/*
|
||||
* Copyright 2010 Jacek Caban for CodeWeavers
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "urlmon_main.h"
|
||||
#include "wine/debug.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(urlmon);
|
||||
|
||||
typedef struct {
|
||||
const IUriVtbl *lpIUriVtbl;
|
||||
LONG ref;
|
||||
} Uri;
|
||||
|
||||
#define URI(x) ((IUri*) &(x)->lpIUriVtbl)
|
||||
|
||||
#define URI_THIS(iface) DEFINE_THIS(Uri, IUri, iface)
|
||||
|
||||
static HRESULT WINAPI Uri_QueryInterface(IUri *iface, REFIID riid, void **ppv)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
|
||||
if(IsEqualGUID(&IID_IUnknown, riid)) {
|
||||
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
|
||||
*ppv = URI(This);
|
||||
}else if(IsEqualGUID(&IID_IUri, riid)) {
|
||||
TRACE("(%p)->(IID_IUri %p)\n", This, ppv);
|
||||
*ppv = URI(This);
|
||||
}else {
|
||||
TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
|
||||
*ppv = NULL;
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
IUnknown_AddRef((IUnknown*)*ppv);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static ULONG WINAPI Uri_AddRef(IUri *iface)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
LONG ref = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE("(%p) ref=%d\n", This, ref);
|
||||
|
||||
return ref;
|
||||
}
|
||||
|
||||
static ULONG WINAPI Uri_Release(IUri *iface)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
LONG ref = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE("(%p) ref=%d\n", This, ref);
|
||||
|
||||
if(!ref)
|
||||
heap_free(This);
|
||||
|
||||
return ref;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetPropertyBSTR(IUri *iface, Uri_PROPERTY uriProp, BSTR *pbstrProperty, DWORD dwFlags)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%d %p %x)\n", This, uriProp, pbstrProperty, dwFlags);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetPropertyLength(IUri *iface, Uri_PROPERTY uriProp, DWORD *pcchProperty, DWORD dwFlags)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%d %p %x)\n", This, uriProp, pcchProperty, dwFlags);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetPropertyDWORD(IUri *iface, Uri_PROPERTY uriProp, DWORD *pcchProperty, DWORD dwFlags)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%d %p %x)\n", This, uriProp, pcchProperty, dwFlags);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_HasProperty(IUri *iface, Uri_PROPERTY uriProp, BOOL *pfHasProperty)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->()\n", This);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetAbsoluteUri(IUri *iface, BSTR *pstrAbsoluteUri)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pstrAbsoluteUri);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetAuthority(IUri *iface, BSTR *pstrAuthority)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pstrAuthority);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetDisplayUri(IUri *iface, BSTR *pstrDisplayUri)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pstrDisplayUri);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetDomain(IUri *iface, BSTR *pstrDomain)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pstrDomain);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetExtension(IUri *iface, BSTR *pstrExtension)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pstrExtension);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetFragment(IUri *iface, BSTR *pstrFragment)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pstrFragment);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetHost(IUri *iface, BSTR *pstrHost)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pstrHost);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetPassword(IUri *iface, BSTR *pstrPassword)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pstrPassword);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetPath(IUri *iface, BSTR *pstrPath)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pstrPath);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetPathAndQuery(IUri *iface, BSTR *pstrPathAndQuery)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pstrPathAndQuery);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetQuery(IUri *iface, BSTR *pstrQuery)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pstrQuery);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetRawUri(IUri *iface, BSTR *pstrRawUri)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pstrRawUri);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetSchemeName(IUri *iface, BSTR *pstrSchemeName)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pstrSchemeName);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetUserInfo(IUri *iface, BSTR *pstrUserInfo)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pstrUserInfo);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetUserName(IUri *iface, BSTR *pstrUserName)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pstrUserName);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetHostType(IUri *iface, DWORD *pdwHostType)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pdwHostType);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetPort(IUri *iface, DWORD *pdwPort)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pdwPort);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetScheme(IUri *iface, DWORD *pdwScheme)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pdwScheme);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetZone(IUri *iface, DWORD *pdwZone)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pdwZone);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_GetProperties(IUri *iface, DWORD *pdwProperties)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pdwProperties);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Uri_IsEqual(IUri *iface, IUri *pUri, BOOL *pfEqual)
|
||||
{
|
||||
Uri *This = URI_THIS(iface);
|
||||
FIXME("(%p)->(%p %p)\n", This, pUri, pfEqual);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
#undef URI_THIS
|
||||
|
||||
static const IUriVtbl UriVtbl = {
|
||||
Uri_QueryInterface,
|
||||
Uri_AddRef,
|
||||
Uri_Release,
|
||||
Uri_GetPropertyBSTR,
|
||||
Uri_GetPropertyLength,
|
||||
Uri_GetPropertyDWORD,
|
||||
Uri_HasProperty,
|
||||
Uri_GetAbsoluteUri,
|
||||
Uri_GetAuthority,
|
||||
Uri_GetDisplayUri,
|
||||
Uri_GetDomain,
|
||||
Uri_GetExtension,
|
||||
Uri_GetFragment,
|
||||
Uri_GetHost,
|
||||
Uri_GetPassword,
|
||||
Uri_GetPath,
|
||||
Uri_GetPathAndQuery,
|
||||
Uri_GetQuery,
|
||||
Uri_GetRawUri,
|
||||
Uri_GetSchemeName,
|
||||
Uri_GetUserInfo,
|
||||
Uri_GetUserName,
|
||||
Uri_GetHostType,
|
||||
Uri_GetPort,
|
||||
Uri_GetScheme,
|
||||
Uri_GetZone,
|
||||
Uri_GetProperties,
|
||||
Uri_IsEqual
|
||||
};
|
||||
|
||||
/***********************************************************************
|
||||
* CreateUri (urlmon.@)
|
||||
*/
|
||||
HRESULT WINAPI CreateUri(LPCWSTR pwzURI, DWORD dwFlags, DWORD_PTR dwReserved, IUri **ppURI)
|
||||
{
|
||||
Uri *ret;
|
||||
|
||||
TRACE("(%s %x %x %p)\n", debugstr_w(pwzURI), dwFlags, (DWORD)dwReserved, ppURI);
|
||||
|
||||
ret = heap_alloc(sizeof(Uri));
|
||||
if(!ret)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
ret->lpIUriVtbl = &UriVtbl;
|
||||
ret->ref = 1;
|
||||
|
||||
*ppURI = URI(ret);
|
||||
return S_OK;
|
||||
}
|
|
@ -43,7 +43,6 @@ HKCR,"PROTOCOLS\Filter\lzdhtml","CLSID",,"%CLSID_DeCompMimeFilter%"
|
|||
|
||||
|
||||
[ZoneMap.Reg]
|
||||
HKCU,"Software\Microsoft\Windows\CurrentVersion\Internet Settings",,,
|
||||
HKCU,"%PATH_ZONEMAP%",,,
|
||||
HKLM,"%PATH_ZONEMAP%",,,
|
||||
HKCU,"%PATH_ZONEMAP%","ProxyByPass", 0x10001,0x1
|
||||
|
|
|
@ -27,18 +27,29 @@
|
|||
<file>session.c</file>
|
||||
<file>umon.c</file>
|
||||
<file>umstream.c</file>
|
||||
<file>uri.c</file>
|
||||
<file>urlmon_main.c</file>
|
||||
<file>usrmarshal.c</file>
|
||||
<file>rsrc.rc</file>
|
||||
<library>wine</library>
|
||||
<library>uuid</library>
|
||||
<library>rpcrt4</library>
|
||||
<library>ole32</library>
|
||||
<library>shlwapi</library>
|
||||
<library>wininet</library>
|
||||
<library>user32</library>
|
||||
<library>advapi32</library>
|
||||
<library>pseh</library>
|
||||
<library>urlmon_proxy</library>
|
||||
<library>ntdll</library>
|
||||
</module>
|
||||
<module name="urlmon_local_interface" type="idlinterface">
|
||||
<file>urlmon_local.idl</file>
|
||||
<module name="urlmon_proxy" type="rpcproxy" allowwarnings="true">
|
||||
<define name="__WINESRC__" />
|
||||
<define name="ENTRY_PREFIX">URLMON_</define>
|
||||
<define name="PROXY_DELEGATION"/>
|
||||
<define name="REGISTER_PROXY_DLL"/>
|
||||
<define name="_URLMON_"/>
|
||||
<define name="PROXY_CLSID_IS">{0x79EAC9F1,0xBAF9,0x11CE,{0x8C,0x82,0x00,0xAA,0x00,0x4B,0xA9,0x0B}}</define>
|
||||
<file>urlmon_urlmon.idl</file>
|
||||
</module>
|
||||
</group>
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
@ stdcall CoInternetCreateSecurityManager(ptr ptr long)
|
||||
@ stdcall CoInternetCreateZoneManager(ptr ptr long)
|
||||
@ stub CoInternetGetProtocolFlags
|
||||
@ stub CoInternetGetSecurityUrl
|
||||
@ stdcall CoInternetGetSecurityUrl(ptr ptr long long)
|
||||
@ stdcall CoInternetGetSession(long ptr long)
|
||||
@ stdcall CoInternetParseUrl(wstr long long wstr long ptr long)
|
||||
@ stdcall CoInternetQueryInfo(ptr long long ptr long ptr long)
|
||||
|
@ -26,6 +26,7 @@
|
|||
@ stdcall CreateAsyncBindCtx(long ptr ptr ptr)
|
||||
@ stdcall CreateAsyncBindCtxEx(ptr long ptr ptr ptr long)
|
||||
@ stdcall CreateFormatEnumerator(long ptr ptr)
|
||||
@ stdcall CreateUri(wstr long long ptr)
|
||||
@ stdcall CreateURLMoniker(ptr wstr ptr)
|
||||
@ stdcall CreateURLMonikerEx(ptr wstr ptr long)
|
||||
@ stdcall -private DllCanUnloadNow()
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
|
||||
#include "urlmon.idl"
|
|
@ -348,6 +348,7 @@ static void init_session(BOOL init)
|
|||
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
|
||||
{
|
||||
unsigned int i;
|
||||
HRESULT hr;
|
||||
|
||||
TRACE("(%s,%s,%p)\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
|
||||
|
||||
|
@ -357,6 +358,10 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
|
|||
return IClassFactory_QueryInterface(object_creation[i].cf, riid, ppv);
|
||||
}
|
||||
|
||||
hr = URLMON_DllGetClassObject(rclsid, riid, ppv);
|
||||
if(SUCCEEDED(hr))
|
||||
return hr;
|
||||
|
||||
FIXME("%s: no class found.\n", debugstr_guid(rclsid));
|
||||
return CLASS_E_CLASSNOTAVAILABLE;
|
||||
}
|
||||
|
|
|
@ -48,6 +48,12 @@ extern HRESULT GopherProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj);
|
|||
extern HRESULT MkProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj);
|
||||
extern HRESULT MimeFilter_Construct(IUnknown *pUnkOuter, LPVOID *ppobj);
|
||||
|
||||
extern HRESULT WINAPI URLMON_DllGetClassObject(REFCLSID rclsid, REFIID iid,LPVOID *ppv) DECLSPEC_HIDDEN;
|
||||
extern HRESULT WINAPI URLMON_DllRegisterServer(void) DECLSPEC_HIDDEN;
|
||||
extern HRESULT WINAPI URLMON_DllUnregisterServer(void) DECLSPEC_HIDDEN;
|
||||
|
||||
extern GUID const CLSID_PSFactoryBuffer DECLSPEC_HIDDEN;
|
||||
|
||||
/**********************************************************************
|
||||
* Dll lifetime tracking declaration for urlmon.dll
|
||||
*/
|
||||
|
|
19
reactos/dll/win32/urlmon/urlmon_urlmon.idl
Normal file
19
reactos/dll/win32/urlmon/urlmon_urlmon.idl
Normal file
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* Copyright 2009 Piotr Caban for Codeweavers
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "urlmon.idl"
|
162
reactos/dll/win32/urlmon/usrmarshal.c
Normal file
162
reactos/dll/win32/urlmon/usrmarshal.c
Normal file
|
@ -0,0 +1,162 @@
|
|||
/*
|
||||
* Copyright 2009 Piotr Caban for Codeweavers
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "urlmon_main.h"
|
||||
|
||||
#include "wine/debug.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(urlmon);
|
||||
|
||||
HRESULT CALLBACK IWinInetHttpInfo_QueryInfo_Proxy(IWinInetHttpInfo* This,
|
||||
DWORD dwOption, LPVOID pBuffer, DWORD *pcbBuf, DWORD *pdwFlags,
|
||||
DWORD *pdwReserved)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT __RPC_STUB IWinInetHttpInfo_QueryInfo_Stub(IWinInetHttpInfo* This,
|
||||
DWORD dwOption, BYTE *pBuffer, DWORD *pcbBuf, DWORD *pdwFlags,
|
||||
DWORD *pdwReserved)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT CALLBACK IWinInetInfo_QueryOption_Proxy(IWinInetInfo* This,
|
||||
DWORD dwOption, LPVOID pBuffer, DWORD *pcbBuf)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT __RPC_STUB IWinInetInfo_QueryOption_Stub(IWinInetInfo* This,
|
||||
DWORD dwOption, BYTE *pBuffer, DWORD *pcbBuf)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT CALLBACK IBindHost_MonikerBindToStorage_Proxy(IBindHost* This,
|
||||
IMoniker *pMk, IBindCtx *pBC, IBindStatusCallback *pBSC,
|
||||
REFIID riid, void **ppvObj)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT __RPC_STUB IBindHost_MonikerBindToStorage_Stub(IBindHost* This,
|
||||
IMoniker *pMk, IBindCtx *pBC, IBindStatusCallback *pBSC,
|
||||
REFIID riid, IUnknown **ppvObj)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT CALLBACK IBindHost_MonikerBindToObject_Proxy(IBindHost* This,
|
||||
IMoniker *pMk, IBindCtx *pBC, IBindStatusCallback *pBSC,
|
||||
REFIID riid, void **ppvObj)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT __RPC_STUB IBindHost_MonikerBindToObject_Stub(IBindHost* This,
|
||||
IMoniker *pMk, IBindCtx *pBC, IBindStatusCallback *pBSC,
|
||||
REFIID riid, IUnknown **ppvObj)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT CALLBACK IBindStatusCallbackEx_GetBindInfoEx_Proxy(
|
||||
IBindStatusCallbackEx* This, DWORD *grfBINDF, BINDINFO *pbindinfo,
|
||||
DWORD *grfBINDF2, DWORD *pdwReserved)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT __RPC_STUB IBindStatusCallbackEx_GetBindInfoEx_Stub(
|
||||
IBindStatusCallbackEx* This, DWORD *grfBINDF, RemBINDINFO *pbindinfo,
|
||||
RemSTGMEDIUM *pstgmed, DWORD *grfBINDF2, DWORD *pdwReserved)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT CALLBACK IBindStatusCallback_GetBindInfo_Proxy(
|
||||
IBindStatusCallback* This, DWORD *grfBINDF, BINDINFO *pbindinfo)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT __RPC_STUB IBindStatusCallback_GetBindInfo_Stub(
|
||||
IBindStatusCallback* This, DWORD *grfBINDF,
|
||||
RemBINDINFO *pbindinfo, RemSTGMEDIUM *pstgmed)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT CALLBACK IBindStatusCallback_OnDataAvailable_Proxy(
|
||||
IBindStatusCallback* This, DWORD grfBSCF, DWORD dwSize,
|
||||
FORMATETC *pformatetc, STGMEDIUM *pstgmed)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT __RPC_STUB IBindStatusCallback_OnDataAvailable_Stub(
|
||||
IBindStatusCallback* This, DWORD grfBSCF, DWORD dwSize,
|
||||
RemFORMATETC *pformatetc, RemSTGMEDIUM *pstgmed)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT CALLBACK IBinding_GetBindResult_Proxy(IBinding* This,
|
||||
CLSID *pclsidProtocol, DWORD *pdwResult,
|
||||
LPOLESTR *pszResult, DWORD *pdwReserved)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT __RPC_STUB IBinding_GetBindResult_Stub(IBinding* This,
|
||||
CLSID *pclsidProtocol, DWORD *pdwResult,
|
||||
LPOLESTR *pszResult, DWORD dwReserved)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE IWindowForBindingUI_GetWindow_Proxy(
|
||||
IWindowForBindingUI* This, REFGUID rguidReason, HWND *phwnd)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
void __RPC_STUB IWindowForBindingUI_GetWindow_Stub(IRpcStubBuffer* This,
|
||||
IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage,
|
||||
DWORD* pdwStubPhase)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
}
|
|
@ -1646,6 +1646,62 @@ interface IUri : IUnknown
|
|||
[out] BOOL *pfEqual);
|
||||
}
|
||||
|
||||
cpp_quote("HRESULT WINAPI CreateUri(LPCWSTR,DWORD,DWORD_PTR,IUri**);")
|
||||
cpp_quote("HRESULT WINAPI CreateUriWithFragment(LPCWSTR,LPCWSTR,DWORD,DWORD_PTR,IUri**);")
|
||||
cpp_quote("HRESULT WINAPI CreateUriFromMultiByteString(LPCSTR,DWORD,DWORD,DWORD,DWORD_PTR,IUri**);")
|
||||
|
||||
cpp_quote("#define Uri_HAS_ABSOLUTE_URI (1 << Uri_PROPERTY_ABSOLUTE_URI)")
|
||||
cpp_quote("#define Uri_HAS_AUTHORITY (1 << Uri_PROPERTY_AUTHORITY)")
|
||||
cpp_quote("#define Uri_HAS_DISPLAY_URI (1 << Uri_PROPERTY_DISPLAY_URI)")
|
||||
cpp_quote("#define Uri_HAS_DOMAIN (1 << Uri_PROPERTY_DOMAIN)")
|
||||
cpp_quote("#define Uri_HAS_EXTENSION (1 << Uri_PROPERTY_EXTENSION)")
|
||||
cpp_quote("#define Uri_HAS_FRAGMENT (1 << Uri_PROPERTY_FRAGMENT)")
|
||||
cpp_quote("#define Uri_HAS_HOST (1 << Uri_PROPERTY_HOST)")
|
||||
cpp_quote("#define Uri_HAS_PASSWORD (1 << Uri_PROPERTY_PASSWORD)")
|
||||
cpp_quote("#define Uri_HAS_PATH (1 << Uri_PROPERTY_PATH)")
|
||||
cpp_quote("#define Uri_HAS_QUERY (1 << Uri_PROPERTY_QUERY)")
|
||||
cpp_quote("#define Uri_HAS_RAW_URI (1 << Uri_PROPERTY_RAW_URI)")
|
||||
cpp_quote("#define Uri_HAS_SCHEME_NAME (1 << Uri_PROPERTY_SCHEME_NAME)")
|
||||
cpp_quote("#define Uri_HAS_USER_NAME (1 << Uri_PROPERTY_USER_NAME)")
|
||||
cpp_quote("#define Uri_HAS_PATH_AND_QUERY (1 << Uri_PROPERTY_PATH_AND_QUERY)")
|
||||
cpp_quote("#define Uri_HAS_USER_INFO (1 << Uri_PROPERTY_USER_INFO)")
|
||||
cpp_quote("#define Uri_HAS_HOST_TYPE (1 << Uri_PROPERTY_HOST_TYPE)")
|
||||
cpp_quote("#define Uri_HAS_PORT (1 << Uri_PROPERTY_PORT)")
|
||||
cpp_quote("#define Uri_HAS_SCHEME (1 << Uri_PROPERTY_SCHEME)")
|
||||
cpp_quote("#define Uri_HAS_ZONE (1 << Uri_PROPERTY_ZONE)")
|
||||
|
||||
cpp_quote("#define Uri_CREATE_ALLOW_RELATIVE 0x0001")
|
||||
cpp_quote("#define Uri_CREATE_ALLOW_IMPLICIT_WILDCARD_SCHEME 0x0002")
|
||||
cpp_quote("#define Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME 0x0004")
|
||||
cpp_quote("#define Uri_CREATE_NOFRAG 0x0008")
|
||||
cpp_quote("#define Uri_CREATE_NO_CANONICALIZE 0x0010")
|
||||
cpp_quote("#define Uri_CREATE_CANONICALIZE 0x0100")
|
||||
cpp_quote("#define Uri_CREATE_FILE_USE_DOS_PATH 0x0020")
|
||||
cpp_quote("#define Uri_CREATE_DECODE_EXTRA_INFO 0x0040")
|
||||
cpp_quote("#define Uri_CREATE_NO_DECODE_EXTRA_INFO 0x0080")
|
||||
cpp_quote("#define Uri_CREATE_CRACK_UNKNOWN_SCHEMES 0x0200")
|
||||
cpp_quote("#define Uri_CREATE_NO_CRACK_UNKNOWN_SCHEMES 0x0400")
|
||||
cpp_quote("#define Uri_CREATE_PRE_PROCESS_HTML_URI 0x0800")
|
||||
cpp_quote("#define Uri_CREATE_NO_PRE_PROCESS_HTML_URI 0x1000")
|
||||
cpp_quote("#define Uri_CREATE_IE_SETTINGS 0x2000")
|
||||
cpp_quote("#define Uri_CREATE_NO_IE_SETTINGS 0x4000")
|
||||
cpp_quote("#define Uri_CREATE_NO_ENCODE_FORBIDDEN_CHARACTERS 0x8000")
|
||||
|
||||
cpp_quote("#define Uri_DISPLAY_NO_FRAGMENT 0x00000001")
|
||||
cpp_quote("#define Uri_PUNYCODE_IDN_HOST 0x00000002")
|
||||
cpp_quote("#define Uri_DISPLAY_IDN_HOST 0x00000004")
|
||||
|
||||
cpp_quote("#define Uri_ENCODING_USER_INFO_AND_PATH_IS_PERCENT_ENCODED_UTF8 0x00000001")
|
||||
cpp_quote("#define Uri_ENCODING_USER_INFO_AND_PATH_IS_CP 0x00000002")
|
||||
cpp_quote("#define Uri_ENCODING_HOST_IS_IDN 0x00000004")
|
||||
cpp_quote("#define Uri_ENCODING_HOST_IS_PERCENT_ENCODED_UTF8 0x00000008")
|
||||
cpp_quote("#define Uri_ENCODING_HOST_IS_PERCENT_ENCODED_CP 0x00000010")
|
||||
cpp_quote("#define Uri_ENCODING_QUERY_AND_FRAGMENT_IS_PERCENT_ENCODED_UTF8 0x00000020")
|
||||
cpp_quote("#define Uri_ENCODING_QUERY_AND_FRAGMENT_IS_CP 0x00000040")
|
||||
cpp_quote("#define Uri_ENCODING_RFC (Uri_ENCODING_USER_INFO_AND_PATH_IS_PERCENT_ENCODED_UTF8|Uri_ENCODING_HOST_IS_PERCENT_ENCODED_UTF8|Uri_ENCODING_QUERY_AND_FRAGMENT_IS_PERCENT_ENCODED_UTF8)")
|
||||
|
||||
cpp_quote("#define UriBuilder_USE_ORIGINAL_FLAGS 0x00000001")
|
||||
|
||||
/*****************************************************************************
|
||||
* IUriContainer interface
|
||||
*/
|
||||
|
@ -1740,6 +1796,8 @@ cpp_quote("#define INET_E_DEFAULT_ACTION INET_E_USE_DEFAULT_PROTOCOLH
|
|||
|
||||
cpp_quote("HRESULT WINAPI CoGetClassObjectFromURL(REFCLSID, LPCWSTR, DWORD, DWORD, LPCWSTR, LPBINDCTX, DWORD, LPVOID, REFIID, LPVOID*);")
|
||||
cpp_quote("HRESULT WINAPI CreateURLMoniker(IMoniker *pmkContext, LPCWSTR szURL, IMoniker **ppmk);")
|
||||
cpp_quote("HRESULT WINAPI CreateURLMonikerEx(IMoniker*,LPCWSTR,IMoniker**,DWORD);")
|
||||
cpp_quote("HRESULT WINAPI CreateURLMonikerEx2(IMoniker*,IUri*,IMoniker**,DWORD);")
|
||||
cpp_quote("HRESULT WINAPI RegisterBindStatusCallback(IBindCtx *pbc, IBindStatusCallback *pbsc, IBindStatusCallback **ppbsc, DWORD dwReserved);")
|
||||
cpp_quote("HRESULT WINAPI CompareSecurityIds(BYTE*,DWORD,BYTE*,DWORD,DWORD);")
|
||||
cpp_quote("HRESULT WINAPI URLDownloadToFileA(LPUNKNOWN,LPCSTR,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);")
|
||||
|
@ -1758,6 +1816,7 @@ cpp_quote("HRESULT WINAPI CoInternetCreateZoneManager(IServiceProvider*, IIntern
|
|||
cpp_quote("HRESULT WINAPI CoInternetParseUrl(LPCWSTR,PARSEACTION,DWORD,LPWSTR,DWORD,DWORD*,DWORD);")
|
||||
cpp_quote("HRESULT WINAPI CoInternetQueryInfo(LPCWSTR,QUERYOPTION,DWORD,LPVOID,DWORD,DWORD*,DWORD);")
|
||||
cpp_quote("HRESULT WINAPI CoInternetSetFeatureEnabled(INTERNETFEATURELIST,DWORD,BOOL);")
|
||||
cpp_quote("HRESULT WINAPI CoInternetGetSecurityUrl(LPCWSTR,LPWSTR*,PSUACTION,DWORD);")
|
||||
cpp_quote("HRESULT WINAPI CreateFormatEnumerator(UINT,FORMATETC*,IEnumFORMATETC**);")
|
||||
cpp_quote("HRESULT WINAPI GetSoftwareUpdateInfo( LPCWSTR szDistUnit, LPSOFTDISTINFO psdi);")
|
||||
cpp_quote("HRESULT WINAPI FaultInIEFeature(HWND,uCLSSPEC*,QUERYCONTEXT*,DWORD);")
|
||||
|
|
Loading…
Reference in a new issue