From b724f0b2e37176e8f52bac3896a4703eaf161afd Mon Sep 17 00:00:00 2001 From: Owen Rudge Date: Wed, 28 Jun 2017 22:13:21 +0100 Subject: [PATCH] wsdapi: Implement IWSDUdpAddress_Get/SetMessageType. Signed-off-by: Owen Rudge Signed-off-by: Alexandre Julliard --- dlls/wsdapi/address.c | 22 ++++++++++++++++++---- dlls/wsdapi/tests/address.c | 14 +++++++------- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/dlls/wsdapi/address.c b/dlls/wsdapi/address.c index f225930558e..69d49568b8c 100644 --- a/dlls/wsdapi/address.c +++ b/dlls/wsdapi/address.c @@ -38,6 +38,7 @@ typedef struct IWSDUdpAddressImpl { WCHAR ipv4Address[25]; WCHAR ipv6Address[64]; WORD port; + WSDUdpMessageType messageType; } IWSDUdpAddressImpl; static inline IWSDUdpAddressImpl *impl_from_IWSDUdpAddress(IWSDUdpAddress *iface) @@ -247,14 +248,27 @@ static HRESULT WINAPI IWSDUdpAddressImpl_GetExclusive(IWSDUdpAddress *This) static HRESULT WINAPI IWSDUdpAddressImpl_SetMessageType(IWSDUdpAddress *This, WSDUdpMessageType messageType) { - FIXME("(%p, %d)\n", This, messageType); - return E_NOTIMPL; + IWSDUdpAddressImpl *impl = impl_from_IWSDUdpAddress(This); + + TRACE("(%p, %d)\n", This, messageType); + + impl->messageType = messageType; + return S_OK; } static HRESULT WINAPI IWSDUdpAddressImpl_GetMessageType(IWSDUdpAddress *This, WSDUdpMessageType *pMessageType) { - FIXME("(%p, %p)\n", This, pMessageType); - return E_NOTIMPL; + IWSDUdpAddressImpl *impl = impl_from_IWSDUdpAddress(This); + + TRACE("(%p, %p)\n", This, pMessageType); + + if (pMessageType == NULL) + { + return E_POINTER; + } + + *pMessageType = impl->messageType; + return S_OK; } static HRESULT WINAPI IWSDUdpAddressImpl_SetTTL(IWSDUdpAddress *This, DWORD dwTTL) diff --git a/dlls/wsdapi/tests/address.c b/dlls/wsdapi/tests/address.c index 1a18f026f3b..0a2824ac055 100644 --- a/dlls/wsdapi/tests/address.c +++ b/dlls/wsdapi/tests/address.c @@ -210,26 +210,26 @@ static void GetSetMessageType_udp_tests(void) ok(udpAddress != NULL, "WSDCreateUdpAddress(NULL, &udpAddress) failed: udpAddress == NULL\n"); rc = IWSDUdpAddress_GetMessageType(udpAddress, NULL); - todo_wine ok(rc == E_POINTER, "GetMessageType returned unexpected result: %08x\n", rc); + ok(rc == E_POINTER, "GetMessageType returned unexpected result: %08x\n", rc); rc = IWSDUdpAddress_GetMessageType(udpAddress, &actualMessageType); - todo_wine ok(rc == S_OK, "GetMessageType returned unexpected result: %08x\n", rc); + ok(rc == S_OK, "GetMessageType returned unexpected result: %08x\n", rc); ok(actualMessageType == 0, "GetMessageType returned unexpected message type: %d\n", actualMessageType); /* Try setting a message type */ rc = IWSDUdpAddress_SetMessageType(udpAddress, expectedMessageType1); - todo_wine ok(rc == S_OK, "SetMessageType returned unexpected result: %08x\n", rc); + ok(rc == S_OK, "SetMessageType returned unexpected result: %08x\n", rc); rc = IWSDUdpAddress_GetMessageType(udpAddress, &actualMessageType); - todo_wine ok(rc == S_OK, "GetMessageType returned unexpected result: %08x\n", rc); - todo_wine ok(actualMessageType == expectedMessageType1, "GetMessageType returned unexpected message type: %d\n", actualMessageType); + ok(rc == S_OK, "GetMessageType returned unexpected result: %08x\n", rc); + ok(actualMessageType == expectedMessageType1, "GetMessageType returned unexpected message type: %d\n", actualMessageType); /* Set another one */ rc = IWSDUdpAddress_SetMessageType(udpAddress, expectedMessageType2); - todo_wine ok(rc == S_OK, "SetMessageType returned unexpected result: %08x\n", rc); + ok(rc == S_OK, "SetMessageType returned unexpected result: %08x\n", rc); rc = IWSDUdpAddress_GetMessageType(udpAddress, &actualMessageType); - todo_wine ok(rc == S_OK, "GetMessageType returned unexpected result: %08x\n", rc); + ok(rc == S_OK, "GetMessageType returned unexpected result: %08x\n", rc); ok(actualMessageType == expectedMessageType2, "GetMessageType returned unexpected message type: %d\n", actualMessageType); /* Release the object */