Module: wine Branch: master Commit: 7d223172c5c69680244a85e5802b55c468ee871b URL: http://source.winehq.org/git/wine.git/?a=commit;h=7d223172c5c69680244a85e580...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Dec 28 01:59:25 2007 +0100
urlmon: Added CoInternetQueryInfo implementation.
---
dlls/urlmon/internet.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ dlls/urlmon/umon.c | 22 ++-------------------- 2 files changed, 46 insertions(+), 20 deletions(-)
diff --git a/dlls/urlmon/internet.c b/dlls/urlmon/internet.c index 66939df..b8168ab 100644 --- a/dlls/urlmon/internet.c +++ b/dlls/urlmon/internet.c @@ -254,3 +254,47 @@ HRESULT WINAPI CoInternetCompareUrl(LPCWSTR pwzUrl1, LPCWSTR pwzUrl2, DWORD dwCo
return UrlCompareW(pwzUrl1, pwzUrl2, dwCompareFlags) ? S_FALSE : S_OK; } + +/*********************************************************************** + * CoInternetQueryInfo (URLMON.@) + * + * Retrieves information relevant to a specified URL + * + */ +HRESULT WINAPI CoInternetQueryInfo(LPCWSTR pwzUrl, QUERYOPTION QueryOption, + DWORD dwQueryFlags, LPVOID pvBuffer, DWORD cbBuffer, DWORD *pcbBuffer, + DWORD dwReserved) +{ + IInternetProtocolInfo *protocol_info; + HRESULT hres; + + TRACE("(%s, %x, %x, %p, %x, %p, %x): stub\n", debugstr_w(pwzUrl), + QueryOption, dwQueryFlags, pvBuffer, cbBuffer, pcbBuffer, dwReserved); + + protocol_info = get_protocol_info(pwzUrl); + + if(protocol_info) { + hres = IInternetProtocolInfo_QueryInfo(protocol_info, pwzUrl, QueryOption, dwQueryFlags, + pvBuffer, cbBuffer, pcbBuffer, dwReserved); + IInternetProtocolInfo_Release(protocol_info); + + return SUCCEEDED(hres) ? hres : E_FAIL; + } + + switch(QueryOption) { + case QUERY_USES_NETWORK: + if(!pvBuffer || cbBuffer < sizeof(DWORD)) + return E_FAIL; + + *(DWORD*)pvBuffer = 0; + if(pcbBuffer) + *pcbBuffer = sizeof(DWORD); + break; + + default: + FIXME("Not supported option %d\n", QueryOption); + return E_NOTIMPL; + } + + return S_OK; +} diff --git a/dlls/urlmon/umon.c b/dlls/urlmon/umon.c index 3954641..7b4a772 100644 --- a/dlls/urlmon/umon.c +++ b/dlls/urlmon/umon.c @@ -1126,26 +1126,6 @@ HRESULT WINAPI CreateURLMoniker(IMoniker *pmkContext, LPCWSTR szURL, IMoniker ** }
/*********************************************************************** - * CoInternetQueryInfo (URLMON.@) - * - * Retrieves information relevant to a specified URL - * - * RETURNS - * S_OK success - * S_FALSE buffer too small - * INET_E_QUERYOPTIONUNKNOWN invalid option - * - */ -HRESULT WINAPI CoInternetQueryInfo(LPCWSTR pwzUrl, QUERYOPTION QueryOption, - DWORD dwQueryFlags, LPVOID pvBuffer, DWORD cbBuffer, DWORD * pcbBuffer, - DWORD dwReserved) -{ - FIXME("(%s, %x, %x, %p, %x, %p, %x): stub\n", debugstr_w(pwzUrl), - QueryOption, dwQueryFlags, pvBuffer, cbBuffer, pcbBuffer, dwReserved); - return S_OK; -} - -/*********************************************************************** * IsAsyncMoniker (URLMON.@) */ HRESULT WINAPI IsAsyncMoniker(IMoniker *pmk) @@ -1184,6 +1164,8 @@ HRESULT WINAPI BindAsyncMoniker(IMoniker *pmk, DWORD grfOpt, IBindStatusCallback LPBC pbc = NULL; HRESULT hr = E_INVALIDARG;
+ TRACE("(%p %08x %p %s %p)\n", pmk, grfOpt, pbsc, debugstr_guid(iidResult), ppvResult); + if (pmk && ppvResult) { *ppvResult = NULL;