[CMAKE]
[reactos.git] / dll / win32 / hnetcfg / apps.c
1 /*
2 * Copyright 2009 Hans Leidekker 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 #include "config.h"
20 #include <stdarg.h>
21 #include <stdio.h>
22
23 #define COBJMACROS
24
25 #include "windef.h"
26 #include "winbase.h"
27 #include "winuser.h"
28 #include "ole2.h"
29 #include "netfw.h"
30
31 #include "wine/debug.h"
32 #include "wine/unicode.h"
33 #include "hnetcfg_private.h"
34
35 WINE_DEFAULT_DEBUG_CHANNEL(hnetcfg);
36
37 typedef struct fw_app
38 {
39 const INetFwAuthorizedApplicationVtbl *vtbl;
40 LONG refs;
41 } fw_app;
42
43 static inline fw_app *impl_from_INetFwAuthorizedApplication( INetFwAuthorizedApplication *iface )
44 {
45 return (fw_app *)((char *)iface - FIELD_OFFSET( fw_app, vtbl ));
46 }
47
48 static ULONG WINAPI fw_app_AddRef(
49 INetFwAuthorizedApplication *iface )
50 {
51 fw_app *fw_app = impl_from_INetFwAuthorizedApplication( iface );
52 return InterlockedIncrement( &fw_app->refs );
53 }
54
55 static ULONG WINAPI fw_app_Release(
56 INetFwAuthorizedApplication *iface )
57 {
58 fw_app *fw_app = impl_from_INetFwAuthorizedApplication( iface );
59 LONG refs = InterlockedDecrement( &fw_app->refs );
60 if (!refs)
61 {
62 TRACE("destroying %p\n", fw_app);
63 HeapFree( GetProcessHeap(), 0, fw_app );
64 }
65 return refs;
66 }
67
68 static HRESULT WINAPI fw_app_QueryInterface(
69 INetFwAuthorizedApplication *iface,
70 REFIID riid,
71 void **ppvObject )
72 {
73 fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
74
75 TRACE("%p %s %p\n", This, debugstr_guid( riid ), ppvObject );
76
77 if ( IsEqualGUID( riid, &IID_INetFwAuthorizedApplication ) ||
78 IsEqualGUID( riid, &IID_IDispatch ) ||
79 IsEqualGUID( riid, &IID_IUnknown ) )
80 {
81 *ppvObject = iface;
82 }
83 else
84 {
85 FIXME("interface %s not implemented\n", debugstr_guid(riid));
86 return E_NOINTERFACE;
87 }
88 INetFwAuthorizedApplication_AddRef( iface );
89 return S_OK;
90 }
91
92 static HRESULT WINAPI fw_app_GetTypeInfoCount(
93 INetFwAuthorizedApplication *iface,
94 UINT *pctinfo )
95 {
96 fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
97
98 FIXME("%p %p\n", This, pctinfo);
99 return E_NOTIMPL;
100 }
101
102 static HRESULT WINAPI fw_app_GetTypeInfo(
103 INetFwAuthorizedApplication *iface,
104 UINT iTInfo,
105 LCID lcid,
106 ITypeInfo **ppTInfo )
107 {
108 fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
109
110 FIXME("%p %u %u %p\n", This, iTInfo, lcid, ppTInfo);
111 return E_NOTIMPL;
112 }
113
114 static HRESULT WINAPI fw_app_GetIDsOfNames(
115 INetFwAuthorizedApplication *iface,
116 REFIID riid,
117 LPOLESTR *rgszNames,
118 UINT cNames,
119 LCID lcid,
120 DISPID *rgDispId )
121 {
122 fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
123
124 FIXME("%p %s %p %u %u %p\n", This, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId);
125 return E_NOTIMPL;
126 }
127
128 static HRESULT WINAPI fw_app_Invoke(
129 INetFwAuthorizedApplication *iface,
130 DISPID dispIdMember,
131 REFIID riid,
132 LCID lcid,
133 WORD wFlags,
134 DISPPARAMS *pDispParams,
135 VARIANT *pVarResult,
136 EXCEPINFO *pExcepInfo,
137 UINT *puArgErr )
138 {
139 fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
140
141 FIXME("%p %d %s %d %d %p %p %p %p\n", This, dispIdMember, debugstr_guid(riid),
142 lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
143 return E_NOTIMPL;
144 }
145
146 static HRESULT WINAPI fw_app_get_Name(
147 INetFwAuthorizedApplication *iface,
148 BSTR *name )
149 {
150 fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
151
152 FIXME("%p, %p\n", This, name);
153 return E_NOTIMPL;
154 }
155
156 static HRESULT WINAPI fw_app_put_Name(
157 INetFwAuthorizedApplication *iface,
158 BSTR name )
159 {
160 fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
161
162 FIXME("%p, %s\n", This, debugstr_w(name));
163 return S_OK;
164 }
165
166 static HRESULT WINAPI fw_app_get_ProcessImageFileName(
167 INetFwAuthorizedApplication *iface,
168 BSTR *imageFileName )
169 {
170 fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
171
172 FIXME("%p, %p\n", This, imageFileName);
173 return E_NOTIMPL;
174 }
175
176 static HRESULT WINAPI fw_app_put_ProcessImageFileName(
177 INetFwAuthorizedApplication *iface,
178 BSTR imageFileName )
179 {
180 fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
181
182 FIXME("%p, %s\n", This, debugstr_w(imageFileName));
183 return S_OK;
184 }
185
186 static HRESULT WINAPI fw_app_get_IpVersion(
187 INetFwAuthorizedApplication *iface,
188 NET_FW_IP_VERSION *ipVersion )
189 {
190 fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
191
192 FIXME("%p, %p\n", This, ipVersion);
193 return E_NOTIMPL;
194 }
195
196 static HRESULT WINAPI fw_app_put_IpVersion(
197 INetFwAuthorizedApplication *iface,
198 NET_FW_IP_VERSION ipVersion )
199 {
200 fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
201
202 FIXME("%p, %u\n", This, ipVersion);
203 return E_NOTIMPL;
204 }
205
206 static HRESULT WINAPI fw_app_get_Scope(
207 INetFwAuthorizedApplication *iface,
208 NET_FW_SCOPE *scope )
209 {
210 fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
211
212 FIXME("%p, %p\n", This, scope);
213 return E_NOTIMPL;
214 }
215
216 static HRESULT WINAPI fw_app_put_Scope(
217 INetFwAuthorizedApplication *iface,
218 NET_FW_SCOPE scope )
219 {
220 fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
221
222 FIXME("%p, %u\n", This, scope);
223 return E_NOTIMPL;
224 }
225
226 static HRESULT WINAPI fw_app_get_RemoteAddresses(
227 INetFwAuthorizedApplication *iface,
228 BSTR *remoteAddrs )
229 {
230 fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
231
232 FIXME("%p, %p\n", This, remoteAddrs);
233 return E_NOTIMPL;
234 }
235
236 static HRESULT WINAPI fw_app_put_RemoteAddresses(
237 INetFwAuthorizedApplication *iface,
238 BSTR remoteAddrs )
239 {
240 fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
241
242 FIXME("%p, %s\n", This, debugstr_w(remoteAddrs));
243 return E_NOTIMPL;
244 }
245
246 static HRESULT WINAPI fw_app_get_Enabled(
247 INetFwAuthorizedApplication *iface,
248 VARIANT_BOOL *enabled )
249 {
250 fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
251
252 FIXME("%p, %p\n", This, enabled);
253
254 *enabled = VARIANT_FALSE;
255 return S_OK;
256 }
257
258 static HRESULT WINAPI fw_app_put_Enabled(
259 INetFwAuthorizedApplication *iface,
260 VARIANT_BOOL enabled )
261 {
262 fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
263
264 FIXME("%p, %d\n", This, enabled);
265 return E_NOTIMPL;
266 }
267
268 static const struct INetFwAuthorizedApplicationVtbl fw_app_vtbl =
269 {
270 fw_app_QueryInterface,
271 fw_app_AddRef,
272 fw_app_Release,
273 fw_app_GetTypeInfoCount,
274 fw_app_GetTypeInfo,
275 fw_app_GetIDsOfNames,
276 fw_app_Invoke,
277 fw_app_get_Name,
278 fw_app_put_Name,
279 fw_app_get_ProcessImageFileName,
280 fw_app_put_ProcessImageFileName,
281 fw_app_get_IpVersion,
282 fw_app_put_IpVersion,
283 fw_app_get_Scope,
284 fw_app_put_Scope,
285 fw_app_get_RemoteAddresses,
286 fw_app_put_RemoteAddresses,
287 fw_app_get_Enabled,
288 fw_app_put_Enabled
289 };
290
291 HRESULT NetFwAuthorizedApplication_create( IUnknown *pUnkOuter, LPVOID *ppObj )
292 {
293 fw_app *fa;
294
295 TRACE("(%p,%p)\n", pUnkOuter, ppObj);
296
297 fa = HeapAlloc( GetProcessHeap(), 0, sizeof(*fa) );
298 if (!fa) return E_OUTOFMEMORY;
299
300 fa->vtbl = &fw_app_vtbl;
301 fa->refs = 1;
302
303 *ppObj = &fa->vtbl;
304
305 TRACE("returning iface %p\n", *ppObj);
306 return S_OK;
307 }
308 typedef struct fw_apps
309 {
310 const INetFwAuthorizedApplicationsVtbl *vtbl;
311 LONG refs;
312 } fw_apps;
313
314 static inline fw_apps *impl_from_INetFwAuthorizedApplications( INetFwAuthorizedApplications *iface )
315 {
316 return (fw_apps *)((char *)iface - FIELD_OFFSET( fw_apps, vtbl ));
317 }
318
319 static ULONG WINAPI fw_apps_AddRef(
320 INetFwAuthorizedApplications *iface )
321 {
322 fw_apps *fw_apps = impl_from_INetFwAuthorizedApplications( iface );
323 return InterlockedIncrement( &fw_apps->refs );
324 }
325
326 static ULONG WINAPI fw_apps_Release(
327 INetFwAuthorizedApplications *iface )
328 {
329 fw_apps *fw_apps = impl_from_INetFwAuthorizedApplications( iface );
330 LONG refs = InterlockedDecrement( &fw_apps->refs );
331 if (!refs)
332 {
333 TRACE("destroying %p\n", fw_apps);
334 HeapFree( GetProcessHeap(), 0, fw_apps );
335 }
336 return refs;
337 }
338
339 static HRESULT WINAPI fw_apps_QueryInterface(
340 INetFwAuthorizedApplications *iface,
341 REFIID riid,
342 void **ppvObject )
343 {
344 fw_apps *This = impl_from_INetFwAuthorizedApplications( iface );
345
346 TRACE("%p %s %p\n", This, debugstr_guid( riid ), ppvObject );
347
348 if ( IsEqualGUID( riid, &IID_INetFwAuthorizedApplications ) ||
349 IsEqualGUID( riid, &IID_IDispatch ) ||
350 IsEqualGUID( riid, &IID_IUnknown ) )
351 {
352 *ppvObject = iface;
353 }
354 else
355 {
356 FIXME("interface %s not implemented\n", debugstr_guid(riid));
357 return E_NOINTERFACE;
358 }
359 INetFwAuthorizedApplications_AddRef( iface );
360 return S_OK;
361 }
362
363 static HRESULT WINAPI fw_apps_GetTypeInfoCount(
364 INetFwAuthorizedApplications *iface,
365 UINT *pctinfo )
366 {
367 fw_apps *This = impl_from_INetFwAuthorizedApplications( iface );
368
369 FIXME("%p %p\n", This, pctinfo);
370 return E_NOTIMPL;
371 }
372
373 static HRESULT WINAPI fw_apps_GetTypeInfo(
374 INetFwAuthorizedApplications *iface,
375 UINT iTInfo,
376 LCID lcid,
377 ITypeInfo **ppTInfo )
378 {
379 fw_apps *This = impl_from_INetFwAuthorizedApplications( iface );
380
381 FIXME("%p %u %u %p\n", This, iTInfo, lcid, ppTInfo);
382 return E_NOTIMPL;
383 }
384
385 static HRESULT WINAPI fw_apps_GetIDsOfNames(
386 INetFwAuthorizedApplications *iface,
387 REFIID riid,
388 LPOLESTR *rgszNames,
389 UINT cNames,
390 LCID lcid,
391 DISPID *rgDispId )
392 {
393 fw_apps *This = impl_from_INetFwAuthorizedApplications( iface );
394
395 FIXME("%p %s %p %u %u %p\n", This, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId);
396 return E_NOTIMPL;
397 }
398
399 static HRESULT WINAPI fw_apps_Invoke(
400 INetFwAuthorizedApplications *iface,
401 DISPID dispIdMember,
402 REFIID riid,
403 LCID lcid,
404 WORD wFlags,
405 DISPPARAMS *pDispParams,
406 VARIANT *pVarResult,
407 EXCEPINFO *pExcepInfo,
408 UINT *puArgErr )
409 {
410 fw_apps *This = impl_from_INetFwAuthorizedApplications( iface );
411
412 FIXME("%p %d %s %d %d %p %p %p %p\n", This, dispIdMember, debugstr_guid(riid),
413 lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
414 return E_NOTIMPL;
415 }
416
417 static HRESULT WINAPI fw_apps_get_Count(
418 INetFwAuthorizedApplications *iface,
419 LONG *count )
420 {
421 fw_apps *This = impl_from_INetFwAuthorizedApplications( iface );
422
423 FIXME("%p, %p\n", This, count);
424 return E_NOTIMPL;
425 }
426
427 static HRESULT WINAPI fw_apps_Add(
428 INetFwAuthorizedApplications *iface,
429 INetFwAuthorizedApplication *app )
430 {
431 fw_apps *This = impl_from_INetFwAuthorizedApplications( iface );
432
433 FIXME("%p, %p\n", This, app);
434 return S_OK;
435 }
436
437 static HRESULT WINAPI fw_apps_Remove(
438 INetFwAuthorizedApplications *iface,
439 BSTR imageFileName )
440 {
441 fw_apps *This = impl_from_INetFwAuthorizedApplications( iface );
442
443 FIXME("%p, %s\n", This, debugstr_w(imageFileName));
444 return S_OK;
445 }
446
447 static HRESULT WINAPI fw_apps_Item(
448 INetFwAuthorizedApplications *iface,
449 BSTR imageFileName,
450 INetFwAuthorizedApplication **app )
451 {
452 fw_apps *This = impl_from_INetFwAuthorizedApplications( iface );
453
454 TRACE("%p, %s, %p\n", This, debugstr_w(imageFileName), app);
455 return NetFwAuthorizedApplication_create( NULL, (void **)app );
456 }
457
458 static HRESULT WINAPI fw_apps_get__NewEnum(
459 INetFwAuthorizedApplications *iface,
460 IUnknown **newEnum )
461 {
462 fw_apps *This = impl_from_INetFwAuthorizedApplications( iface );
463
464 FIXME("%p, %p\n", This, newEnum);
465 return E_NOTIMPL;
466 }
467
468 static const struct INetFwAuthorizedApplicationsVtbl fw_apps_vtbl =
469 {
470 fw_apps_QueryInterface,
471 fw_apps_AddRef,
472 fw_apps_Release,
473 fw_apps_GetTypeInfoCount,
474 fw_apps_GetTypeInfo,
475 fw_apps_GetIDsOfNames,
476 fw_apps_Invoke,
477 fw_apps_get_Count,
478 fw_apps_Add,
479 fw_apps_Remove,
480 fw_apps_Item,
481 fw_apps_get__NewEnum
482 };
483
484 HRESULT NetFwAuthorizedApplications_create( IUnknown *pUnkOuter, LPVOID *ppObj )
485 {
486 fw_apps *fa;
487
488 TRACE("(%p,%p)\n", pUnkOuter, ppObj);
489
490 fa = HeapAlloc( GetProcessHeap(), 0, sizeof(*fa) );
491 if (!fa) return E_OUTOFMEMORY;
492
493 fa->vtbl = &fw_apps_vtbl;
494 fa->refs = 1;
495
496 *ppObj = &fa->vtbl;
497
498 TRACE("returning iface %p\n", *ppObj);
499 return S_OK;
500 }