/* * 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); }