wine-wine/include/wsdbase.idl

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