123 lines
3.5 KiB
Plaintext
123 lines
3.5 KiB
Plaintext
/*
|
|
* 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);
|
|
}
|