Jacek Caban : urlmon: Added CoInternetQueryInfo implementation.

Alexandre Julliard julliard at winehq.org
Fri Dec 28 07:38:42 CST 2007


Module: wine
Branch: master
Commit: 7d223172c5c69680244a85e5802b55c468ee871b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=7d223172c5c69680244a85e5802b55c468ee871b

Author: Jacek Caban <jacek at 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;




More information about the wine-cvs mailing list