| /* |
| * 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 |
| */ |
| |
| import "objidl.idl"; |
| |
| cpp_quote("#define WSDAPI_ADDRESSFAMILY_IPV4 1") |
| cpp_quote("#define WSDAPI_ADDRESSFAMILY_IPV6 2") |
| |
| interface IWSDAddress; |
| interface IWSDUdpAddress; |
| interface IWSDMessageParameters; |
| |
| cpp_quote("HRESULT WINAPI WSDCreateUdpAddress(IWSDUdpAddress **ppAddress);") |
| |
| #ifndef SOCKADDR_STORAGE |
| cpp_quote("#if 1") |
| cpp_quote("#ifndef __CSADDR_DEFINED__") |
| cpp_quote("typedef struct SOCKADDR_STORAGE SOCKADDR_STORAGE;") |
| cpp_quote("#endif") |
| cpp_quote("#else") |
| typedef void SOCKADDR_STORAGE; |
| cpp_quote("#endif") |
| #endif |
| |
| [ |
| uuid(b9574c6c-12a6-4f74-93a1-3318ff605759), |
| object, |
| local |
| ] |
| interface IWSDAddress : IUnknown |
| { |
| HRESULT Serialize([out, size_is(cchLength)] LPWSTR pszBuffer, [in] DWORD cchLength, [in] BOOL fSafe); |
| HRESULT Deserialize([in] LPCWSTR pszBuffer); |
| } |
| |
| [ |
| uuid(70d23498-4ee6-4340-a3df-d845d2235467), |
| object, |
| local |
| ] |
| interface IWSDTransportAddress : IWSDAddress |
| { |
| HRESULT GetPort([out] WORD *pwPort); |
| HRESULT SetPort([in] WORD wPort); |
| HRESULT GetTransportAddress([out] LPCWSTR *ppszAddress); |
| HRESULT GetTransportAddressEx([in] BOOL fSafe, [out] LPCWSTR *ppszAddress); |
| HRESULT SetTransportAddress([in] LPCWSTR pszAddress); |
| } |
| |
| typedef enum _WSDUdpMessageType |
| { |
| ONE_WAY, |
| TWO_WAY |
| } WSDUdpMessageType; |
| |
| [ |
| uuid(74d6124a-a441-4f78-a1eb-97a8d1996893), |
| object, |
| local |
| ] |
| interface IWSDUdpAddress : IWSDTransportAddress |
| { |
| HRESULT SetSockaddr([in] const SOCKADDR_STORAGE *pSockAddr); |
| HRESULT GetSockaddr([out] SOCKADDR_STORAGE *pSockAddr); |
| HRESULT SetExclusive(BOOL fExclusive); |
| HRESULT GetExclusive(); |
| HRESULT SetMessageType([in] WSDUdpMessageType messageType); |
| HRESULT GetMessageType([out] WSDUdpMessageType* pMessageType); |
| HRESULT SetTTL([in] DWORD dwTTL); |
| HRESULT GetTTL([out] DWORD *pdwTTL); |
| HRESULT SetAlias([in] const GUID* pAlias); |
| HRESULT GetAlias([out] GUID *pAlias); |
| } |
| |
| [ |
| uuid(1fafe8a2-e6fc-4b80-b6cf-b7d45c416d7c), |
| object |
| ] |
| interface IWSDMessageParameters : IUnknown |
| { |
| HRESULT GetLocalAddress([out] IWSDAddress** ppAddress); |
| HRESULT SetLocalAddress([in] IWSDAddress* pAddress); |
| HRESULT GetRemoteAddress([out] IWSDAddress** ppAddress); |
| HRESULT SetRemoteAddress([in] IWSDAddress* pAddress); |
| HRESULT GetLowerParameters([out] IWSDMessageParameters** ppTxParams); |
| } |
| |
| cpp_quote("HRESULT WINAPI WSDCreateUdpMessageParameters(IWSDUdpMessageParameters **ppTxParams);") |
| |
| typedef struct _WSDUdpRetransmitParams |
| { |
| ULONG ulSendDelay; |
| ULONG ulRepeat; |
| ULONG ulRepeatMinDelay; |
| ULONG ulRepeatMaxDelay; |
| ULONG ulRepeatUpperDelay; |
| } WSDUdpRetransmitParams; |
| |
| [ |
| uuid(9934149f-8f0c-447b-aa0b-73124b0ca7f0), |
| object |
| ] |
| interface IWSDUdpMessageParameters : IWSDMessageParameters |
| { |
| HRESULT SetRetransmitParams([in] const WSDUdpRetransmitParams *pParams); |
| HRESULT GetRetransmitParams([out] WSDUdpRetransmitParams *pParams); |
| } |