xref: /reactos/sdk/include/psdk/netcon.idl (revision 845faec4)
1/*
2 * Copyright 2009 Jacek Caban for CodeWeavers
3 *
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.
8 *
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.
13 *
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
17 */
18
19#ifndef DO_NO_IMPORTS
20import "oaidl.idl";
21import "unknwn.idl";
22import "wtypes.idl";
23/* import "prsht.idl"; */
24#endif
25
26cpp_quote("DEFINE_GUID(CLSID_NetSharingManager,0x5c63c1ad,0x3956,0x4ff8,0x84,0x86,0x40,0x03,0x47,0x58,0x31,0x5b);")
27
28[
29    object,
30    uuid(c08956a1-1cd3-11d1-b1c5-00805fc1270e),
31    pointer_default(unique)
32]
33interface INetConnection : IUnknown
34{
35    typedef enum tagNETCON_CHARACTERISTIC_FLAGS
36    {
37        NCCF_NONE               = 0x0000,
38        NCCF_ALL_USERS          = 0x0001,
39        NCCF_ALLOW_DUPLICATION  = 0x0002,
40        NCCF_ALLOW_REMOVAL      = 0x0004,
41        NCCF_ALLOW_RENAME       = 0x0008,
42        NCCF_INCOMING_ONLY      = 0x0020,
43        NCCF_OUTGOING_ONLY      = 0x0040,
44        NCCF_BRANDED            = 0x0080,
45        NCCF_SHARED             = 0x0100,
46        NCCF_BRIDGED            = 0x0200,
47        NCCF_FIREWALLED         = 0x0400,
48        NCCF_DEFAULT            = 0x0800,
49        NCCF_HOMENET_CAPABLE    = 0x1000,
50        NCCF_SHARED_PRIVATE     = 0x2000,
51        NCCF_QUARANTINED        = 0x4000,
52        NCCF_RESERVED           = 0x8000,
53        NCCF_BLUETOOTH_MASK  = 0x000F0000,
54        NCCF_LAN_MASK        = 0x00F00000
55    } NETCON_CHARACTERISTIC_FLAGS;
56
57    typedef enum tagNETCON_STATUS
58    {
59        NCS_DISCONNECTED,
60        NCS_CONNECTING,
61        NCS_CONNECTED,
62        NCS_DISCONNECTING,
63        NCS_HARDWARE_NOT_PRESENT,
64        NCS_HARDWARE_DISABLED,
65        NCS_HARDWARE_MALFUNCTION,
66        NCS_MEDIA_DISCONNECTED,
67        NCS_AUTHENTICATING,
68        NCS_AUTHENTICATION_SUCCEEDED,
69        NCS_AUTHENTICATION_FAILED,
70        NCS_INVALID_ADDRESS,
71        NCS_CREDENTIALS_REQUIRED
72    } NETCON_STATUS;
73
74    typedef enum tagNETCON_TYPE
75    {
76        NCT_DIRECT_CONNECT,
77        NCT_INBOUND,
78        NCT_INTERNET,
79        NCT_LAN,
80        NCT_PHONE,
81        NCT_TUNNEL,
82        NCT_BRIDGE
83    } NETCON_TYPE;
84
85    typedef enum tagNETCON_MEDIATYPE
86    {
87        NCM_NONE,
88        NCM_DIRECT,
89        NCM_ISDN,
90        NCM_LAN,
91        NCM_PHONE,
92        NCM_TUNNEL,
93        NCM_PPPOE,
94        NCM_BRIDGE,
95        NCM_SHAREDACCESSHOST_LAN,
96        NCM_SHAREDACCESSHOST_RAS
97    } NETCON_MEDIATYPE;
98
99    typedef struct tagNETCON_PROPERTIES
100    {
101        GUID              guidId;
102        [string] LPWSTR   pszwName;
103        [string] LPWSTR   pszwDeviceName;
104        NETCON_STATUS     Status;
105        NETCON_MEDIATYPE  MediaType;
106        DWORD             dwCharacter;
107        CLSID             clsidThisObject;
108        CLSID             clsidUiObject;
109    } NETCON_PROPERTIES;
110
111    HRESULT Connect();
112
113    HRESULT Disconnect();
114
115    HRESULT Delete();
116
117    HRESULT Duplicate(
118            [in, string] LPCWSTR pszwDuplicateName,
119            [out]        INetConnection **ppCon);
120
121    HRESULT GetProperties([out] NETCON_PROPERTIES **ppProps);
122
123    HRESULT GetUiObjectClassId([out, ref] CLSID *pclsid);
124
125    HRESULT Rename([in, string] LPCWSTR pszwNewName);
126}
127
128[
129    object,
130    uuid(24b7e9b5-e38f-4685-851b-00892cf5f940),
131    oleautomation,
132    dual,
133    pointer_default(unique)
134]
135interface INetSharingPortMappingProps : IDispatch
136{
137    [propget, id(1)]
138    HRESULT Name([out, retval] BSTR *pbstrName);
139
140    [propget, id(2)]
141    HRESULT IPProtocol([out, retval] UCHAR *pucIPProt);
142
143    [propget, id(3)]
144    HRESULT ExternalPort([out, retval] long *pusPort);
145
146    [propget, id(4)]
147    HRESULT InternalPort([out, retval] long *pusPort);
148
149    [propget, id(5)]
150    HRESULT Options([out, retval] long *pdwOptions);
151
152    [propget, id(6)]
153    HRESULT TargetName([out, retval] BSTR *pbstrTargetName);
154
155    [propget, id(7)]
156    HRESULT TargetIPAddress([out, retval] BSTR *pbstrTargetIPAddress);
157
158    [propget, id(8)]
159    HRESULT Enabled([out, retval] VARIANT_BOOL *pbool);
160}
161
162[
163    object,
164    uuid(c08956b1-1cd3-11d1-b1c5-00805fc1270e),
165    oleautomation,
166    dual,
167    pointer_default(unique)
168]
169interface INetSharingPortMapping : IDispatch
170{
171    [id(1)]
172    HRESULT Disable();
173
174    [id(2)]
175    HRESULT Enable();
176
177    [propget, id(3)]
178    HRESULT Properties([out, retval] INetSharingPortMappingProps **ppNSPMP);
179
180    [id(4)]
181    HRESULT Delete();
182};
183[
184    object,
185    uuid(02e4a2de-da20-4e34-89c8-ac22275a010b),
186    oleautomation,
187    dual,
188    pointer_default(unique)
189]
190interface INetSharingPortMappingCollection : IDispatch
191{
192    [propget, id(DISPID_NEWENUM), restricted]
193    HRESULT _NewEnum([out, retval] IUnknown **pVal);
194
195    [propget, id(1)]
196    HRESULT Count([out, retval] long *pVal);
197}
198
199[
200    object,
201    uuid(c08956b6-1cd3-11d1-b1c5-00805fc1270e),
202    oleautomation,
203    dual,
204    pointer_default(unique)
205]
206interface INetSharingConfiguration : IDispatch
207{
208    typedef enum tagSHARINGCONNECTIONTYPE {
209        ICSSHARINGTYPE_PUBLIC,
210        ICSSHARINGTYPE_PRIVATE
211    } SHARINGCONNECTIONTYPE, *LPSHARINGCONNECTIONTYPE;
212
213    typedef enum tagSHARINGCONNECTION_ENUM_FLAGS {
214            ICSSC_DEFAULT,
215            ICSSC_ENABLED
216    } SHARINGCONNECTION_ENUM_FLAGS;
217
218    typedef enum tagICS_TARGETTYPE {
219            ICSTT_NAME,
220            ICSTT_IPADDRESS
221    }ICS_TARGETTYPE;
222
223    [propget, id(1)]
224    HRESULT SharingEnabled([out, retval] VARIANT_BOOL *pbEnabled);
225
226    [propget, id(2)]
227    HRESULT SharingConnectionType([out, retval] SHARINGCONNECTIONTYPE *pType);
228
229    [id(3)]
230    HRESULT DisableSharing();
231
232    [id(4)]
233    HRESULT EnableSharing([in] SHARINGCONNECTIONTYPE Type);
234
235    [propget, id(5)]
236    HRESULT InternetFirewallEnabled([out, retval] VARIANT_BOOL *pbEnabled);
237
238    [id(6)]
239    HRESULT DisableInternetFirewall();
240
241    [id(7)]
242    HRESULT EnableInternetFirewall();
243
244    [propget, id(8)]
245    HRESULT EnumPortMappings(
246        [in] SHARINGCONNECTION_ENUM_FLAGS Flags,
247        [out, retval] INetSharingPortMappingCollection **ppColl);
248
249    [id(9)]
250    HRESULT AddPortMapping(
251            [in] BSTR bstrName,
252            [in] UCHAR ucIPProtocol,
253            [in] USHORT usExternalPort,
254            [in] USHORT usInternalPort,
255            [in] DWORD dwOptions,
256            [in] BSTR bstrTargetNameOrIPAddress,
257            [in] ICS_TARGETTYPE eTargetType,
258            [out, retval] INetSharingPortMapping **ppMapping );
259
260    [id(10)]
261    HRESULT RemovePortMapping([in] INetSharingPortMapping *pMapping);
262}
263
264[
265    object,
266    uuid(c08956b4-1cd3-11d1-b1c5-00805fc1270e),
267    pointer_default(unique)
268]
269interface IEnumNetSharingPublicConnection : IUnknown
270{
271    HRESULT Next(
272            [in] ULONG celt,
273            [out, size_is(celt), length_is(*pceltFetched)] VARIANT *rgVar,
274            [out] ULONG *pceltFetched);
275
276    HRESULT Skip([in] ULONG celt);
277
278    HRESULT Reset();
279
280    HRESULT Clone([out] IEnumNetSharingPublicConnection **ppenum);
281}
282
283[
284    object,
285    uuid(c08956b5-1cd3-11d1-b1c5-00805fc1270e),
286    pointer_default(unique)
287]
288interface IEnumNetSharingPrivateConnection : IUnknown
289{
290    HRESULT Next(
291            [in] ULONG celt,
292            [out, size_is(celt), length_is(*pCeltFetched)] VARIANT *rgVar,
293            [out] ULONG *pCeltFetched);
294
295    HRESULT Skip([in] ULONG celt);
296
297    HRESULT Reset();
298
299    HRESULT Clone([out] IEnumNetSharingPrivateConnection **ppenum);
300}
301
302[
303    object,
304    uuid(f4277c95-ce5b-463d-8167-5662d9bcaa72),
305    oleautomation,
306    dual,
307    pointer_default(unique)
308]
309interface INetConnectionProps : IDispatch
310{
311    [propget, id(1)]
312    HRESULT Guid([out, retval] BSTR *pbstrGuid);
313
314    [propget, id(2)]
315    HRESULT Name([out, retval] BSTR *pbstrName);
316
317    [propget, id(3)]
318    HRESULT DeviceName([out, retval] BSTR *pbstrDeviceName);
319
320    [propget, id(4)]
321    HRESULT Status([out, retval] NETCON_STATUS *pStatus);
322
323    [propget, id(5)]
324    HRESULT MediaType([out, retval] NETCON_MEDIATYPE *pMediaType);
325
326    [propget, id(6)]
327    HRESULT Characteristics([out, retval] DWORD *pdwFlags);
328}
329
330[
331    object,
332    uuid(7d7a6355-f372-4971-a149-bfc927be762a),
333    oleautomation,
334    dual,
335    pointer_default(unique)
336]
337interface INetSharingPublicConnectionCollection : IDispatch
338{
339    [propget, id(DISPID_NEWENUM), restricted]
340    HRESULT _NewEnum([out, retval] IUnknown **pVal);
341
342    [propget, id(1)]
343    HRESULT Count([out, retval] long *pVal);
344}
345
346[
347    object,
348    uuid(33c4643c-7811-46fa-a89a-768597bd7223),
349    oleautomation,
350    dual,
351    pointer_default(unique)
352 ]
353interface INetSharingEveryConnectionCollection : IDispatch
354{
355    [propget, id(DISPID_NEWENUM), restricted]
356    HRESULT _NewEnum([out, retval] IUnknown **pVal);
357
358    [propget, id(1)]
359    HRESULT Count([out, retval] long *pVal);
360}
361
362[
363    object,
364    uuid(38ae69e0-4409-402a-a2cb-e965c727f840),
365    oleautomation,
366    dual,
367    pointer_default(unique)
368 ]
369interface INetSharingPrivateConnectionCollection : IDispatch
370{
371    [propget, id(DISPID_NEWENUM), restricted]
372    HRESULT _NewEnum([out, retval] IUnknown **pVal);
373
374    [propget, id(1)]
375    HRESULT Count([out, retval] long *pVal);
376}
377
378[
379    object,
380    uuid(c08956b7-1cd3-11d1-b1c5-00805fc1270e),
381    oleautomation,
382    dual,
383    pointer_default(unique)
384]
385interface INetSharingManager : IDispatch
386{
387    [propget, id(1)]
388    HRESULT SharingInstalled([out, retval] VARIANT_BOOL *pbInstalled);
389
390    [propget, id(2)]
391    HRESULT EnumPublicConnections(
392            [in]  SHARINGCONNECTION_ENUM_FLAGS Flags,
393            [out, retval] INetSharingPublicConnectionCollection **ppColl);
394
395    [propget, id(3)]
396    HRESULT EnumPrivateConnections(
397            [in]  SHARINGCONNECTION_ENUM_FLAGS Flags,
398            [out, retval] INetSharingPrivateConnectionCollection **ppColl);
399
400    [propget, id(6)]
401    HRESULT INetSharingConfigurationForINetConnection(
402            [in] INetConnection *pNetConnection,
403            [out, retval] INetSharingConfiguration **ppNetSharingConfiguration);
404
405    [propget, id(7)]
406    HRESULT EnumEveryConnection([out, retval] INetSharingEveryConnectionCollection **ppColl);
407
408    [propget, id(8)]
409    HRESULT NetConnectionProps(
410            [in] INetConnection *pNetConnection,
411            [out, retval] INetConnectionProps **ppProps);
412}
413