Owen Rudge : wsdapi: Add stub implementation of IWSDUdpAddress.
Alexandre Julliard
julliard at winehq.org
Fri Jun 2 17:03:28 CDT 2017
Module: wine
Branch: master
Commit: ac38f7fd938eaddfaaeb44cf7d9e66e5e31447a3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ac38f7fd938eaddfaaeb44cf7d9e66e5e31447a3
Author: Owen Rudge <orudge at codeweavers.com>
Date: Tue May 30 23:06:14 2017 +0100
wsdapi: Add stub implementation of IWSDUdpAddress.
Signed-off-by: Owen Rudge <orudge at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/wsdapi/Makefile.in | 1 +
dlls/wsdapi/address.c | 252 ++++++++++++++++++++++++++++++++++++++++++++++++
dlls/wsdapi/wsdapi.spec | 2 +-
3 files changed, 254 insertions(+), 1 deletion(-)
diff --git a/dlls/wsdapi/Makefile.in b/dlls/wsdapi/Makefile.in
index 82d0ca1..30862cc 100644
--- a/dlls/wsdapi/Makefile.in
+++ b/dlls/wsdapi/Makefile.in
@@ -3,6 +3,7 @@ IMPORTLIB = wsdapi
IMPORTS = user32
C_SRCS = \
+ address.c \
discovery.c \
main.c \
memory.c \
diff --git a/dlls/wsdapi/address.c b/dlls/wsdapi/address.c
new file mode 100644
index 0000000..7efcac2
--- /dev/null
+++ b/dlls/wsdapi/address.c
@@ -0,0 +1,252 @@
+/*
+ * Web Services on Devices
+ *
+ * Copyright 2017 Owen Rudge 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 <stdarg.h>
+
+#define COBJMACROS
+
+#include "windef.h"
+#include "winbase.h"
+#include "wine/debug.h"
+#include "wsdapi.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(wsdapi);
+
+typedef struct IWSDUdpAddressImpl {
+ IWSDUdpAddress IWSDUdpAddress_iface;
+ LONG ref;
+} IWSDUdpAddressImpl;
+
+static inline IWSDUdpAddressImpl *impl_from_IWSDUdpAddress(IWSDUdpAddress *iface)
+{
+ return CONTAINING_RECORD(iface, IWSDUdpAddressImpl, IWSDUdpAddress_iface);
+}
+
+static HRESULT WINAPI IWSDUdpAddressImpl_QueryInterface(IWSDUdpAddress *iface, REFIID riid, void **ppv)
+{
+ IWSDUdpAddressImpl *This = impl_from_IWSDUdpAddress(iface);
+
+ TRACE("(%p, %s, %p)\n", This, debugstr_guid(riid), ppv);
+
+ if (!ppv)
+ {
+ WARN("Invalid parameter\n");
+ return E_INVALIDARG;
+ }
+
+ *ppv = NULL;
+
+ if (IsEqualIID(riid, &IID_IUnknown) ||
+ IsEqualIID(riid, &IID_IWSDUdpAddress) ||
+ IsEqualIID(riid, &IID_IWSDTransportAddress) ||
+ IsEqualIID(riid, &IID_IWSDAddress))
+ {
+ *ppv = &This->IWSDUdpAddress_iface;
+ }
+ else
+ {
+ WARN("Unknown IID %s\n", debugstr_guid(riid));
+ return E_NOINTERFACE;
+ }
+
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
+}
+
+static ULONG WINAPI IWSDUdpAddressImpl_AddRef(IWSDUdpAddress *iface)
+{
+ IWSDUdpAddressImpl *This = impl_from_IWSDUdpAddress(iface);
+ ULONG ref = InterlockedIncrement(&This->ref);
+
+ TRACE("(%p) ref=%d\n", This, ref);
+ return ref;
+}
+
+static ULONG WINAPI IWSDUdpAddressImpl_Release(IWSDUdpAddress *iface)
+{
+ IWSDUdpAddressImpl *This = impl_from_IWSDUdpAddress(iface);
+ ULONG ref = InterlockedDecrement(&This->ref);
+
+ TRACE("(%p) ref=%d\n", This, ref);
+
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+
+ return ref;
+}
+
+static HRESULT WINAPI IWSDUdpAddressImpl_Serialize(IWSDUdpAddress *This, LPWSTR pszBuffer, DWORD cchLength, BOOL fSafe)
+{
+ FIXME("(%p, %p, %d, %d)\n", This, pszBuffer, cchLength, fSafe);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IWSDUdpAddressImpl_Deserialize(IWSDUdpAddress *This, LPCWSTR pszBuffer)
+{
+ FIXME("(%p, %s)\n", This, debugstr_w(pszBuffer));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IWSDUdpAddressImpl_GetPort(IWSDUdpAddress *This, WORD *pwPort)
+{
+ FIXME("(%p, %p)\n", This, pwPort);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IWSDUdpAddressImpl_SetPort(IWSDUdpAddress *This, WORD wPort)
+{
+ FIXME("(%p, %d)\n", This, wPort);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IWSDUdpAddressImpl_GetTransportAddress(IWSDUdpAddress *This, LPCWSTR *ppszAddress)
+{
+ FIXME("(%p, %p)\n", This, ppszAddress);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IWSDUdpAddressImpl_GetTransportAddressEx(IWSDUdpAddress *This, BOOL fSafe, LPCWSTR *ppszAddress)
+{
+ FIXME("(%p, %d, %p)\n", This, fSafe, ppszAddress);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IWSDUdpAddressImpl_SetTransportAddress(IWSDUdpAddress *This, LPCWSTR pszAddress)
+{
+ FIXME("(%p, %s)\n", This, debugstr_w(pszAddress));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IWSDUdpAddressImpl_SetSockaddr(IWSDUdpAddress *This, const SOCKADDR_STORAGE *pSockAddr)
+{
+ FIXME("(%p, %p)\n", This, pSockAddr);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IWSDUdpAddressImpl_GetSockaddr(IWSDUdpAddress *This, SOCKADDR_STORAGE *pSockAddr)
+{
+ FIXME("(%p, %p)\n", This, pSockAddr);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IWSDUdpAddressImpl_SetExclusive(IWSDUdpAddress *This, BOOL fExclusive)
+{
+ FIXME("(%p, %d)\n", This, fExclusive);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IWSDUdpAddressImpl_GetExclusive(IWSDUdpAddress *This)
+{
+ FIXME("(%p)\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IWSDUdpAddressImpl_SetMessageType(IWSDUdpAddress *This, WSDUdpMessageType messageType)
+{
+ FIXME("(%p, %d)\n", This, messageType);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IWSDUdpAddressImpl_GetMessageType(IWSDUdpAddress *This, WSDUdpMessageType *pMessageType)
+{
+ FIXME("(%p, %p)\n", This, pMessageType);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IWSDUdpAddressImpl_SetTTL(IWSDUdpAddress *This, DWORD dwTTL)
+{
+ FIXME("(%p, %d)\n", This, dwTTL);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IWSDUdpAddressImpl_GetTTL(IWSDUdpAddress *This, DWORD *pdwTTL)
+{
+ FIXME("(%p, %p)\n", This, pdwTTL);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IWSDUdpAddressImpl_SetAlias(IWSDUdpAddress *This, const GUID *pAlias)
+{
+ FIXME("(%p, %s)\n", This, debugstr_guid(pAlias));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IWSDUdpAddressImpl_GetAlias(IWSDUdpAddress *This, GUID *pAlias)
+{
+ FIXME("(%p, %p)\n", This, pAlias);
+ return E_NOTIMPL;
+}
+
+static const IWSDUdpAddressVtbl udpAddressVtbl =
+{
+ IWSDUdpAddressImpl_QueryInterface,
+ IWSDUdpAddressImpl_AddRef,
+ IWSDUdpAddressImpl_Release,
+ IWSDUdpAddressImpl_Serialize,
+ IWSDUdpAddressImpl_Deserialize,
+ IWSDUdpAddressImpl_GetPort,
+ IWSDUdpAddressImpl_SetPort,
+ IWSDUdpAddressImpl_GetTransportAddress,
+ IWSDUdpAddressImpl_GetTransportAddressEx,
+ IWSDUdpAddressImpl_SetTransportAddress,
+ IWSDUdpAddressImpl_SetSockaddr,
+ IWSDUdpAddressImpl_GetSockaddr,
+ IWSDUdpAddressImpl_SetExclusive,
+ IWSDUdpAddressImpl_GetExclusive,
+ IWSDUdpAddressImpl_SetMessageType,
+ IWSDUdpAddressImpl_GetMessageType,
+ IWSDUdpAddressImpl_SetTTL,
+ IWSDUdpAddressImpl_GetTTL,
+ IWSDUdpAddressImpl_SetAlias,
+ IWSDUdpAddressImpl_GetAlias
+};
+
+HRESULT WINAPI WSDCreateUdpAddress(IWSDUdpAddress **ppAddress)
+{
+ IWSDUdpAddressImpl *obj;
+
+ TRACE("(%p)\n", ppAddress);
+
+ if (ppAddress == NULL)
+ {
+ WARN("Invalid parameter: ppAddress == NULL\n");
+ return E_POINTER;
+ }
+
+ *ppAddress = NULL;
+
+ obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*obj));
+
+ if (!obj)
+ {
+ WARN("Out of memory\n");
+ return E_OUTOFMEMORY;
+ }
+
+ obj->IWSDUdpAddress_iface.lpVtbl = &udpAddressVtbl;
+ obj->ref = 1;
+
+ *ppAddress = &obj->IWSDUdpAddress_iface;
+ TRACE("Returning iface %p\n", *ppAddress);
+
+ return S_OK;
+}
diff --git a/dlls/wsdapi/wsdapi.spec b/dlls/wsdapi/wsdapi.spec
index 7954ede..a8f1aaa 100644
--- a/dlls/wsdapi/wsdapi.spec
+++ b/dlls/wsdapi/wsdapi.spec
@@ -23,7 +23,7 @@
@ stub WSDCreateHttpTransport
@ stub WSDCreateMetadataAgent
@ stub WSDCreateOutboundAttachment
-@ stub WSDCreateUdpAddress
+@ stdcall WSDCreateUdpAddress(ptr)
@ stub WSDCreateUdpMessageParameters
@ stub WSDCreateUdpTransport
@ stdcall WSDDetachLinkedMemory(ptr)
More information about the wine-cvs
mailing list