Sync with trunk (r48545)
[reactos.git] / include / psdk / netcon.idl
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
20 import "oaidl.idl";
21 import "unknwn.idl";
22 import "wtypes.idl";
23 /* import "prsht.idl"; */
24 #endif
25
26 cpp_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 ]
33 interface 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 ]
135 interface 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 ]
169 interface 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 ]
190 interface 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 ]
206 interface 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 ]
269 interface 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 ]
288 interface 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 ]
309 interface 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 ]
337 interface 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 ]
353 interface 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 ]
369 interface 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 ]
385 interface 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 }