2 * Copyright 2009 Hans Leidekker 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
19 #define WIN32_NO_STATUS
21 #define COM_NO_WINDOWS_H
31 //#include "winuser.h"
35 #include <wine/debug.h>
36 #include <wine/unicode.h>
37 #include "hnetcfg_private.h"
39 WINE_DEFAULT_DEBUG_CHANNEL(hnetcfg
);
43 INetFwAuthorizedApplication INetFwAuthorizedApplication_iface
;
47 static inline fw_app
*impl_from_INetFwAuthorizedApplication( INetFwAuthorizedApplication
*iface
)
49 return CONTAINING_RECORD(iface
, fw_app
, INetFwAuthorizedApplication_iface
);
52 static ULONG WINAPI
fw_app_AddRef(
53 INetFwAuthorizedApplication
*iface
)
55 fw_app
*fw_app
= impl_from_INetFwAuthorizedApplication( iface
);
56 return InterlockedIncrement( &fw_app
->refs
);
59 static ULONG WINAPI
fw_app_Release(
60 INetFwAuthorizedApplication
*iface
)
62 fw_app
*fw_app
= impl_from_INetFwAuthorizedApplication( iface
);
63 LONG refs
= InterlockedDecrement( &fw_app
->refs
);
66 TRACE("destroying %p\n", fw_app
);
67 HeapFree( GetProcessHeap(), 0, fw_app
);
72 static HRESULT WINAPI
fw_app_QueryInterface(
73 INetFwAuthorizedApplication
*iface
,
77 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
79 TRACE("%p %s %p\n", This
, debugstr_guid( riid
), ppvObject
);
81 if ( IsEqualGUID( riid
, &IID_INetFwAuthorizedApplication
) ||
82 IsEqualGUID( riid
, &IID_IDispatch
) ||
83 IsEqualGUID( riid
, &IID_IUnknown
) )
89 FIXME("interface %s not implemented\n", debugstr_guid(riid
));
92 INetFwAuthorizedApplication_AddRef( iface
);
96 static HRESULT WINAPI
fw_app_GetTypeInfoCount(
97 INetFwAuthorizedApplication
*iface
,
100 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
102 TRACE("%p %p\n", This
, pctinfo
);
107 static ITypeLib
*typelib
;
108 static ITypeInfo
*typeinfo
[last_tid
];
110 static REFIID tid_id
[] =
112 &IID_INetFwAuthorizedApplication
,
113 &IID_INetFwAuthorizedApplications
,
119 HRESULT
get_typeinfo( enum type_id tid
, ITypeInfo
**ret
)
127 hr
= LoadRegTypeLib( &LIBID_NetFwPublicTypeLib
, 1, 0, LOCALE_SYSTEM_DEFAULT
, &lib
);
130 ERR("LoadRegTypeLib failed: %08x\n", hr
);
133 if (InterlockedCompareExchangePointer( (void **)&typelib
, lib
, NULL
))
134 ITypeLib_Release( lib
);
140 hr
= ITypeLib_GetTypeInfoOfGuid( typelib
, tid_id
[tid
], &info
);
143 ERR("GetTypeInfoOfGuid(%s) failed: %08x\n", debugstr_guid(tid_id
[tid
]), hr
);
146 if (InterlockedCompareExchangePointer( (void **)(typeinfo
+ tid
), info
, NULL
))
147 ITypeInfo_Release( info
);
149 *ret
= typeinfo
[tid
];
153 static HRESULT WINAPI
fw_app_GetTypeInfo(
154 INetFwAuthorizedApplication
*iface
,
157 ITypeInfo
**ppTInfo
)
159 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
161 TRACE("%p %u %u %p\n", This
, iTInfo
, lcid
, ppTInfo
);
162 return get_typeinfo( INetFwAuthorizedApplication_tid
, ppTInfo
);
165 static HRESULT WINAPI
fw_app_GetIDsOfNames(
166 INetFwAuthorizedApplication
*iface
,
173 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
177 TRACE("%p %s %p %u %u %p\n", This
, debugstr_guid(riid
), rgszNames
, cNames
, lcid
, rgDispId
);
179 hr
= get_typeinfo( INetFwAuthorizedApplication_tid
, &typeinfo
);
182 hr
= ITypeInfo_GetIDsOfNames( typeinfo
, rgszNames
, cNames
, rgDispId
);
183 ITypeInfo_Release( typeinfo
);
188 static HRESULT WINAPI
fw_app_Invoke(
189 INetFwAuthorizedApplication
*iface
,
194 DISPPARAMS
*pDispParams
,
196 EXCEPINFO
*pExcepInfo
,
199 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
203 TRACE("%p %d %s %d %d %p %p %p %p\n", This
, dispIdMember
, debugstr_guid(riid
),
204 lcid
, wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
206 hr
= get_typeinfo( INetFwAuthorizedApplication_tid
, &typeinfo
);
209 hr
= ITypeInfo_Invoke( typeinfo
, &This
->INetFwAuthorizedApplication_iface
, dispIdMember
,
210 wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
211 ITypeInfo_Release( typeinfo
);
216 static HRESULT WINAPI
fw_app_get_Name(
217 INetFwAuthorizedApplication
*iface
,
220 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
222 FIXME("%p, %p\n", This
, name
);
226 static HRESULT WINAPI
fw_app_put_Name(
227 INetFwAuthorizedApplication
*iface
,
230 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
232 FIXME("%p, %s\n", This
, debugstr_w(name
));
236 static HRESULT WINAPI
fw_app_get_ProcessImageFileName(
237 INetFwAuthorizedApplication
*iface
,
238 BSTR
*imageFileName
)
240 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
242 FIXME("%p, %p\n", This
, imageFileName
);
246 static HRESULT WINAPI
fw_app_put_ProcessImageFileName(
247 INetFwAuthorizedApplication
*iface
,
250 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
252 FIXME("%p, %s\n", This
, debugstr_w(imageFileName
));
256 static HRESULT WINAPI
fw_app_get_IpVersion(
257 INetFwAuthorizedApplication
*iface
,
258 NET_FW_IP_VERSION
*ipVersion
)
260 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
262 FIXME("%p, %p\n", This
, ipVersion
);
266 static HRESULT WINAPI
fw_app_put_IpVersion(
267 INetFwAuthorizedApplication
*iface
,
268 NET_FW_IP_VERSION ipVersion
)
270 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
272 FIXME("%p, %u\n", This
, ipVersion
);
276 static HRESULT WINAPI
fw_app_get_Scope(
277 INetFwAuthorizedApplication
*iface
,
278 NET_FW_SCOPE
*scope
)
280 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
282 FIXME("%p, %p\n", This
, scope
);
286 static HRESULT WINAPI
fw_app_put_Scope(
287 INetFwAuthorizedApplication
*iface
,
290 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
292 FIXME("%p, %u\n", This
, scope
);
296 static HRESULT WINAPI
fw_app_get_RemoteAddresses(
297 INetFwAuthorizedApplication
*iface
,
300 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
302 FIXME("%p, %p\n", This
, remoteAddrs
);
306 static HRESULT WINAPI
fw_app_put_RemoteAddresses(
307 INetFwAuthorizedApplication
*iface
,
310 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
312 FIXME("%p, %s\n", This
, debugstr_w(remoteAddrs
));
316 static HRESULT WINAPI
fw_app_get_Enabled(
317 INetFwAuthorizedApplication
*iface
,
318 VARIANT_BOOL
*enabled
)
320 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
322 FIXME("%p, %p\n", This
, enabled
);
324 *enabled
= VARIANT_FALSE
;
328 static HRESULT WINAPI
fw_app_put_Enabled(
329 INetFwAuthorizedApplication
*iface
,
330 VARIANT_BOOL enabled
)
332 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
334 FIXME("%p, %d\n", This
, enabled
);
338 static const struct INetFwAuthorizedApplicationVtbl fw_app_vtbl
=
340 fw_app_QueryInterface
,
343 fw_app_GetTypeInfoCount
,
345 fw_app_GetIDsOfNames
,
349 fw_app_get_ProcessImageFileName
,
350 fw_app_put_ProcessImageFileName
,
351 fw_app_get_IpVersion
,
352 fw_app_put_IpVersion
,
355 fw_app_get_RemoteAddresses
,
356 fw_app_put_RemoteAddresses
,
361 HRESULT
NetFwAuthorizedApplication_create( IUnknown
*pUnkOuter
, LPVOID
*ppObj
)
365 TRACE("(%p,%p)\n", pUnkOuter
, ppObj
);
367 fa
= HeapAlloc( GetProcessHeap(), 0, sizeof(*fa
) );
368 if (!fa
) return E_OUTOFMEMORY
;
370 fa
->INetFwAuthorizedApplication_iface
.lpVtbl
= &fw_app_vtbl
;
373 *ppObj
= &fa
->INetFwAuthorizedApplication_iface
;
375 TRACE("returning iface %p\n", *ppObj
);
378 typedef struct fw_apps
380 INetFwAuthorizedApplications INetFwAuthorizedApplications_iface
;
384 static inline fw_apps
*impl_from_INetFwAuthorizedApplications( INetFwAuthorizedApplications
*iface
)
386 return CONTAINING_RECORD(iface
, fw_apps
, INetFwAuthorizedApplications_iface
);
389 static ULONG WINAPI
fw_apps_AddRef(
390 INetFwAuthorizedApplications
*iface
)
392 fw_apps
*fw_apps
= impl_from_INetFwAuthorizedApplications( iface
);
393 return InterlockedIncrement( &fw_apps
->refs
);
396 static ULONG WINAPI
fw_apps_Release(
397 INetFwAuthorizedApplications
*iface
)
399 fw_apps
*fw_apps
= impl_from_INetFwAuthorizedApplications( iface
);
400 LONG refs
= InterlockedDecrement( &fw_apps
->refs
);
403 TRACE("destroying %p\n", fw_apps
);
404 HeapFree( GetProcessHeap(), 0, fw_apps
);
409 static HRESULT WINAPI
fw_apps_QueryInterface(
410 INetFwAuthorizedApplications
*iface
,
414 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
416 TRACE("%p %s %p\n", This
, debugstr_guid( riid
), ppvObject
);
418 if ( IsEqualGUID( riid
, &IID_INetFwAuthorizedApplications
) ||
419 IsEqualGUID( riid
, &IID_IDispatch
) ||
420 IsEqualGUID( riid
, &IID_IUnknown
) )
426 FIXME("interface %s not implemented\n", debugstr_guid(riid
));
427 return E_NOINTERFACE
;
429 INetFwAuthorizedApplications_AddRef( iface
);
433 static HRESULT WINAPI
fw_apps_GetTypeInfoCount(
434 INetFwAuthorizedApplications
*iface
,
437 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
439 FIXME("%p %p\n", This
, pctinfo
);
443 static HRESULT WINAPI
fw_apps_GetTypeInfo(
444 INetFwAuthorizedApplications
*iface
,
447 ITypeInfo
**ppTInfo
)
449 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
451 TRACE("%p %u %u %p\n", This
, iTInfo
, lcid
, ppTInfo
);
452 return get_typeinfo( INetFwAuthorizedApplications_tid
, ppTInfo
);
455 static HRESULT WINAPI
fw_apps_GetIDsOfNames(
456 INetFwAuthorizedApplications
*iface
,
463 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
467 TRACE("%p %s %p %u %u %p\n", This
, debugstr_guid(riid
), rgszNames
, cNames
, lcid
, rgDispId
);
469 hr
= get_typeinfo( INetFwAuthorizedApplications_tid
, &typeinfo
);
472 hr
= ITypeInfo_GetIDsOfNames( typeinfo
, rgszNames
, cNames
, rgDispId
);
473 ITypeInfo_Release( typeinfo
);
478 static HRESULT WINAPI
fw_apps_Invoke(
479 INetFwAuthorizedApplications
*iface
,
484 DISPPARAMS
*pDispParams
,
486 EXCEPINFO
*pExcepInfo
,
489 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
493 TRACE("%p %d %s %d %d %p %p %p %p\n", This
, dispIdMember
, debugstr_guid(riid
),
494 lcid
, wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
496 hr
= get_typeinfo( INetFwAuthorizedApplications_tid
, &typeinfo
);
499 hr
= ITypeInfo_Invoke( typeinfo
, &This
->INetFwAuthorizedApplications_iface
, dispIdMember
,
500 wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
501 ITypeInfo_Release( typeinfo
);
506 static HRESULT WINAPI
fw_apps_get_Count(
507 INetFwAuthorizedApplications
*iface
,
510 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
512 FIXME("%p, %p\n", This
, count
);
516 static HRESULT WINAPI
fw_apps_Add(
517 INetFwAuthorizedApplications
*iface
,
518 INetFwAuthorizedApplication
*app
)
520 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
522 FIXME("%p, %p\n", This
, app
);
526 static HRESULT WINAPI
fw_apps_Remove(
527 INetFwAuthorizedApplications
*iface
,
530 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
532 FIXME("%p, %s\n", This
, debugstr_w(imageFileName
));
536 static HRESULT WINAPI
fw_apps_Item(
537 INetFwAuthorizedApplications
*iface
,
539 INetFwAuthorizedApplication
**app
)
541 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
543 TRACE("%p, %s, %p\n", This
, debugstr_w(imageFileName
), app
);
544 return NetFwAuthorizedApplication_create( NULL
, (void **)app
);
547 static HRESULT WINAPI
fw_apps_get__NewEnum(
548 INetFwAuthorizedApplications
*iface
,
551 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
553 FIXME("%p, %p\n", This
, newEnum
);
557 static const struct INetFwAuthorizedApplicationsVtbl fw_apps_vtbl
=
559 fw_apps_QueryInterface
,
562 fw_apps_GetTypeInfoCount
,
564 fw_apps_GetIDsOfNames
,
573 HRESULT
NetFwAuthorizedApplications_create( IUnknown
*pUnkOuter
, LPVOID
*ppObj
)
577 TRACE("(%p,%p)\n", pUnkOuter
, ppObj
);
579 fa
= HeapAlloc( GetProcessHeap(), 0, sizeof(*fa
) );
580 if (!fa
) return E_OUTOFMEMORY
;
582 fa
->INetFwAuthorizedApplications_iface
.lpVtbl
= &fw_apps_vtbl
;
585 *ppObj
= &fa
->INetFwAuthorizedApplications_iface
;
587 TRACE("returning iface %p\n", *ppObj
);