Owen Rudge : wsdapi: Add implementation of SetAddressFamily.

Alexandre Julliard julliard at winehq.org
Mon Apr 10 15:37:18 CDT 2017


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

Author: Owen Rudge <orudge at codeweavers.com>
Date:   Thu Apr  6 22:19:46 2017 +0100

wsdapi: Add implementation of SetAddressFamily.

Signed-off-by: Owen Rudge <orudge at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wsdapi/discovery.c | 22 ++++++++++++++++++++--
 include/wsdbase.idl     |  3 +++
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/dlls/wsdapi/discovery.c b/dlls/wsdapi/discovery.c
index 990f030..a3d7b9b 100644
--- a/dlls/wsdapi/discovery.c
+++ b/dlls/wsdapi/discovery.c
@@ -36,6 +36,7 @@ typedef struct IWSDiscoveryPublisherImpl {
     IWSDiscoveryPublisher IWSDiscoveryPublisher_iface;
     LONG                  ref;
     IWSDXMLContext        *xmlContext;
+    DWORD                 addressFamily;
 } IWSDiscoveryPublisherImpl;
 
 static inline IWSDiscoveryPublisherImpl *impl_from_IWSDiscoveryPublisher(IWSDiscoveryPublisher *iface)
@@ -101,8 +102,25 @@ static ULONG WINAPI IWSDiscoveryPublisherImpl_Release(IWSDiscoveryPublisher *ifa
 
 static HRESULT WINAPI IWSDiscoveryPublisherImpl_SetAddressFamily(IWSDiscoveryPublisher *This, DWORD dwAddressFamily)
 {
-    FIXME("(%p, %d)\n", This, dwAddressFamily);
-    return E_NOTIMPL;
+    IWSDiscoveryPublisherImpl *impl = impl_from_IWSDiscoveryPublisher(This);
+
+    TRACE("(%p, %d)\n", This, dwAddressFamily);
+
+    /* Has the address family already been set? */
+    if (impl->addressFamily != 0)
+    {
+        return STG_E_INVALIDFUNCTION;
+    }
+
+    if ((dwAddressFamily == WSDAPI_ADDRESSFAMILY_IPV4) || (dwAddressFamily == WSDAPI_ADDRESSFAMILY_IPV6) ||
+        (dwAddressFamily == (WSDAPI_ADDRESSFAMILY_IPV4 | WSDAPI_ADDRESSFAMILY_IPV6)))
+    {
+        /* TODO: Check that the address family is supported by the system */
+        impl->addressFamily = dwAddressFamily;
+        return S_OK;
+    }
+
+    return E_INVALIDARG;
 }
 
 static HRESULT WINAPI IWSDiscoveryPublisherImpl_RegisterNotificationSink(IWSDiscoveryPublisher *This, IWSDiscoveryPublisherNotify *pSink)
diff --git a/include/wsdbase.idl b/include/wsdbase.idl
index 35db5b9..c93262d 100644
--- a/include/wsdbase.idl
+++ b/include/wsdbase.idl
@@ -18,6 +18,9 @@
 
 import "objidl.idl";
 
+cpp_quote("#define WSDAPI_ADDRESSFAMILY_IPV4 1")
+cpp_quote("#define WSDAPI_ADDRESSFAMILY_IPV6 2")
+
 interface IWSDAddress;
 interface IWSDMessageParameters;
 




More information about the wine-cvs mailing list