2 * Copyright 2017 Owen Rudge for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
23 interface IWSDScopeMatchingRule
;
24 interface IWSDiscoveryPublisherNotify
;
25 interface IWSDiscoveryPublisher
;
26 interface IWSDXMLContext
;
27 interface IWSDiscoveryProvider
;
28 interface IWSDiscoveryProviderNotify
;
29 interface IWSDiscoveredService
;
32 uuid(fcafe424
-fef5
-481a
-bd9f
-33ce0574256f
),
36 pointer_default(unique)
38 interface IWSDScopeMatchingRule
: IUnknown
40 HRESULT GetScopeRule
([out] LPCWSTR
*ppszScopeMatchingRule
);
41 HRESULT MatchScopes
([in] LPCWSTR pszScope1
, [in] LPCWSTR pszScope2
, [out] BOOL
*pfMatch
);
45 uuid(73ee3ced
-b6e6
-4329-a546
-3e8ad46563d2
),
49 pointer_default(unique)
51 interface IWSDiscoveryProviderNotify
: IUnknown
53 HRESULT Add
([in] IWSDiscoveredService
*service
);
54 HRESULT Remove
([in] IWSDiscoveredService
*service
);
55 HRESULT SearchFailed
([in] HRESULT hr
,[in, optional] LPCWSTR tag
);
56 HRESULT SearchComplete
([in, optional] LPCWSTR tag
);
60 uuid(4bad8a3b
-b374
-4420-9632-aac945b374aa
),
64 pointer_default(unique)
66 interface IWSDiscoveredService
: IUnknown
68 HRESULT GetEndpointReference
([out] WSD_ENDPOINT_REFERENCE
**endpoint_reference
);
69 HRESULT GetTypes
([out] WSD_NAME_LIST
**types_list
);
70 HRESULT GetScopes
([out] WSD_URI_LIST
**scopes_list
);
71 HRESULT GetXAddrs
([out] WSD_URI_LIST
**x_addrs_list
);
72 HRESULT GetMetadataVersion
([out] ULONGLONG
*metadata_version
);
73 HRESULT GetExtendedDiscoXML
([out] WSDXML_ELEMENT
**header_any
,[out] WSDXML_ELEMENT
**body_any
);
74 HRESULT GetProbeResolveTag
([out] LPCWSTR
*tag
);
75 HRESULT GetRemoteTransportAddress
([out] LPCWSTR
*remote_transport_address
);
76 HRESULT GetLocalTransportAddress
([out] LPCWSTR
*local_transport_address
);
77 HRESULT GetLocalInterfaceGUID
([out] GUID
*guid
);
78 HRESULT GetInstanceId
([out] ULONGLONG
*instance_id
);
82 uuid (8ffc8e55
-f0eb
-480f
-88b7
-b435dd281d45
),
86 pointer_default(unique)
88 interface IWSDiscoveryProvider
: IUnknown
90 HRESULT SetAddressFamily
([in] DWORD address_family
);
91 HRESULT Attach
([in] IWSDiscoveryProviderNotify
*sink
);
93 HRESULT SearchById
([in] LPCWSTR
id,[in, optional] LPCWSTR tag
);
94 HRESULT SearchByAddress
([in] LPCWSTR address
,[in, optional] LPCWSTR tag
);
95 HRESULT SearchByType
([in, optional] const WSD_NAME_LIST
*types_list
, \
96 [in, optional] const WSD_URI_LIST
*scopes_list
,[in, optional] LPCWSTR match_by
,[in, optional] LPCWSTR tag
);
97 HRESULT GetXMLContext
([out] IWSDXMLContext
**context
);
101 uuid(e67651b0
-337a
-4b3c
-9758-733388568251),
105 pointer_default(unique)
107 interface IWSDiscoveryPublisherNotify
: IUnknown
109 HRESULT ProbeHandler
([in] const WSD_SOAP_MESSAGE
*pSoap
, [in] IWSDMessageParameters
*pMessageParameters
);
110 HRESULT ResolveHandler
([in] const WSD_SOAP_MESSAGE
*pSoap
, [in] IWSDMessageParameters
*pMessageParameters
);
114 uuid(AE01E1A8
-3ff9
-4148-8116-057cc616fe13
),
118 pointer_default(unique)
120 interface IWSDiscoveryPublisher
: IUnknown
122 HRESULT SetAddressFamily
([in] DWORD dwAddressFamily
);
123 HRESULT RegisterNotificationSink
([in] IWSDiscoveryPublisherNotify
*pSink
);
124 HRESULT UnRegisterNotificationSink
([in] IWSDiscoveryPublisherNotify
*pSink
);
126 HRESULT Publish
([in] LPCWSTR pszId
, [in] ULONGLONG ullMetadataVersion
, [in] ULONGLONG ullInstanceId
, [in] ULONGLONG ullMessageNumber
,
127 [in, optional] LPCWSTR pszSessionId
, [in, optional] const WSD_NAME_LIST
*pTypesList
, [in, optional] const WSD_URI_LIST
*pScopesList
,
128 [in, optional] const WSD_URI_LIST
*pXAddrsList
);
130 HRESULT UnPublish
([in] LPCWSTR pszId
, [in] ULONGLONG ullInstanceId
, [in] ULONGLONG ullMessageNumber
, [in, optional] LPCWSTR pszSessionId
,
131 [in, optional] const WSDXML_ELEMENT
*pAny
);
133 HRESULT MatchProbe
([in] const WSD_SOAP_MESSAGE
*pProbeMessage
, [in] IWSDMessageParameters
*pMessageParameters
, [in] LPCWSTR pszId
,
134 [in] ULONGLONG ullMetadataVersion
, [in] ULONGLONG ullInstanceId
, [in] ULONGLONG ullMessageNumber
, [in, optional] LPCWSTR pszSessionId
,
135 [in, optional] const WSD_NAME_LIST
*pTypesList
, [in, optional] const WSD_URI_LIST
*pScopesList
, [in, optional] const WSD_URI_LIST
*pXAddrsList
);
137 HRESULT MatchResolve
([in] const WSD_SOAP_MESSAGE
*pResolveMessage
, [in] IWSDMessageParameters
*pMessageParameters
, [in] LPCWSTR pszId
,
138 [in] ULONGLONG ullMetadataVersion
, [in] ULONGLONG ullInstanceId
, [in] ULONGLONG ullMessageNumber
, [in, optional] LPCWSTR pszSessionId
,
139 [in, optional] const WSD_NAME_LIST
*pTypesList
, [in, optional] const WSD_URI_LIST
*pScopesList
, [in, optional] const WSD_URI_LIST
*pXAddrsList
);
141 HRESULT PublishEx
([in] LPCWSTR pszId
, [in] ULONGLONG ullMetadataVersion
, [in] ULONGLONG ullInstanceId
, [in] ULONGLONG ullMessageNumber
,
142 [in, optional] LPCWSTR pszSessionId
, [in, optional] const WSD_NAME_LIST
*pTypesList
, [in, optional] const WSD_URI_LIST
*pScopesList
,
143 [in, optional] const WSD_URI_LIST
*pXAddrsList
, [in, optional] const WSDXML_ELEMENT
*pHeaderAny
,
144 [in, optional] const WSDXML_ELEMENT
*pReferenceParameterAny
, [in, optional] const WSDXML_ELEMENT
*pPolicyAny
,
145 [in, optional] const WSDXML_ELEMENT
*pEndpointReferenceAny
, [in, optional] const WSDXML_ELEMENT
*pAny
);
147 HRESULT MatchProbeEx
([in] const WSD_SOAP_MESSAGE
*pProbeMessage
, [in] IWSDMessageParameters
*pMessageParameters
, [in] LPCWSTR pszId
,
148 [in] ULONGLONG ullMetadataVersion
, [in] ULONGLONG ullInstanceId
, [in] ULONGLONG ullMessageNumber
, [in, optional] LPCWSTR pszSessionId
,
149 [in, optional] const WSD_NAME_LIST
*pTypesList
, [in, optional] const WSD_URI_LIST
*pScopesList
, [in, optional] const WSD_URI_LIST
*pXAddrsList
,
150 [in, optional] const WSDXML_ELEMENT
*pHeaderAny
, [in, optional] const WSDXML_ELEMENT
*pReferenceParameterAny
,
151 [in, optional] const WSDXML_ELEMENT
*pPolicyAny
, [in, optional] const WSDXML_ELEMENT
*pEndpointReferenceAny
,
152 [in, optional] const WSDXML_ELEMENT
*pAny
);
154 HRESULT MatchResolveEx
([in] const WSD_SOAP_MESSAGE
*pResolveMessage
, [in] IWSDMessageParameters
*pMessageParameters
, [in] LPCWSTR pszId
,
155 [in] ULONGLONG ullMetadataVersion
, [in] ULONGLONG ullInstanceId
, [in] ULONGLONG ullMessageNumber
, [in, optional] LPCWSTR pszSessionId
,
156 [in, optional] const WSD_NAME_LIST
*pTypesList
, [in, optional] const WSD_URI_LIST
*pScopesList
, [in, optional] const WSD_URI_LIST
*pXAddrsList
,
157 [in, optional] const WSDXML_ELEMENT
*pHeaderAny
, [in, optional] const WSDXML_ELEMENT
*pReferenceParameterAny
,
158 [in, optional] const WSDXML_ELEMENT
*pPolicyAny
, [in, optional] const WSDXML_ELEMENT
*pEndpointReferenceAny
,
159 [in, optional] const WSDXML_ELEMENT
*pAny
);
161 HRESULT RegisterScopeMatchingRule
([in] IWSDScopeMatchingRule
*pScopeMatchingRule
);
162 HRESULT UnRegisterScopeMatchingRule
([in] IWSDScopeMatchingRule
*pScopeMatchingRule
);
163 HRESULT GetXMLContext
([out] IWSDXMLContext
**ppContext
);
166 cpp_quote
("HRESULT WINAPI WSDCreateDiscoveryProvider(IWSDXMLContext *context, IWSDiscoveryProvider **provider);")
167 cpp_quote
("HRESULT WINAPI WSDCreateDiscoveryPublisher(IWSDXMLContext* pContext, IWSDiscoveryPublisher **ppPublisher);")