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 #include "hnetcfg_private.h"
26 INetFwAuthorizedApplication INetFwAuthorizedApplication_iface
;
30 static inline fw_app
*impl_from_INetFwAuthorizedApplication( INetFwAuthorizedApplication
*iface
)
32 return CONTAINING_RECORD(iface
, fw_app
, INetFwAuthorizedApplication_iface
);
35 static ULONG WINAPI
fw_app_AddRef(
36 INetFwAuthorizedApplication
*iface
)
38 fw_app
*fw_app
= impl_from_INetFwAuthorizedApplication( iface
);
39 return InterlockedIncrement( &fw_app
->refs
);
42 static ULONG WINAPI
fw_app_Release(
43 INetFwAuthorizedApplication
*iface
)
45 fw_app
*fw_app
= impl_from_INetFwAuthorizedApplication( iface
);
46 LONG refs
= InterlockedDecrement( &fw_app
->refs
);
49 TRACE("destroying %p\n", fw_app
);
50 HeapFree( GetProcessHeap(), 0, fw_app
);
55 static HRESULT WINAPI
fw_app_QueryInterface(
56 INetFwAuthorizedApplication
*iface
,
60 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
62 TRACE("%p %s %p\n", This
, debugstr_guid( riid
), ppvObject
);
64 if ( IsEqualGUID( riid
, &IID_INetFwAuthorizedApplication
) ||
65 IsEqualGUID( riid
, &IID_IDispatch
) ||
66 IsEqualGUID( riid
, &IID_IUnknown
) )
72 FIXME("interface %s not implemented\n", debugstr_guid(riid
));
75 INetFwAuthorizedApplication_AddRef( iface
);
79 static HRESULT WINAPI
fw_app_GetTypeInfoCount(
80 INetFwAuthorizedApplication
*iface
,
83 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
85 TRACE("%p %p\n", This
, pctinfo
);
90 static ITypeLib
*typelib
;
91 static ITypeInfo
*typeinfo
[last_tid
];
93 static REFIID tid_id
[] =
95 &IID_INetFwAuthorizedApplication
,
96 &IID_INetFwAuthorizedApplications
,
103 HRESULT
get_typeinfo( enum type_id tid
, ITypeInfo
**ret
)
111 hr
= LoadRegTypeLib( &LIBID_NetFwPublicTypeLib
, 1, 0, LOCALE_SYSTEM_DEFAULT
, &lib
);
114 ERR("LoadRegTypeLib failed: %08x\n", hr
);
117 if (InterlockedCompareExchangePointer( (void **)&typelib
, lib
, NULL
))
118 ITypeLib_Release( lib
);
124 hr
= ITypeLib_GetTypeInfoOfGuid( typelib
, tid_id
[tid
], &info
);
127 ERR("GetTypeInfoOfGuid(%s) failed: %08x\n", debugstr_guid(tid_id
[tid
]), hr
);
130 if (InterlockedCompareExchangePointer( (void **)(typeinfo
+ tid
), info
, NULL
))
131 ITypeInfo_Release( info
);
133 *ret
= typeinfo
[tid
];
137 static HRESULT WINAPI
fw_app_GetTypeInfo(
138 INetFwAuthorizedApplication
*iface
,
141 ITypeInfo
**ppTInfo
)
143 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
145 TRACE("%p %u %u %p\n", This
, iTInfo
, lcid
, ppTInfo
);
146 return get_typeinfo( INetFwAuthorizedApplication_tid
, ppTInfo
);
149 static HRESULT WINAPI
fw_app_GetIDsOfNames(
150 INetFwAuthorizedApplication
*iface
,
157 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
161 TRACE("%p %s %p %u %u %p\n", This
, debugstr_guid(riid
), rgszNames
, cNames
, lcid
, rgDispId
);
163 hr
= get_typeinfo( INetFwAuthorizedApplication_tid
, &typeinfo
);
166 hr
= ITypeInfo_GetIDsOfNames( typeinfo
, rgszNames
, cNames
, rgDispId
);
167 ITypeInfo_Release( typeinfo
);
172 static HRESULT WINAPI
fw_app_Invoke(
173 INetFwAuthorizedApplication
*iface
,
178 DISPPARAMS
*pDispParams
,
180 EXCEPINFO
*pExcepInfo
,
183 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
187 TRACE("%p %d %s %d %d %p %p %p %p\n", This
, dispIdMember
, debugstr_guid(riid
),
188 lcid
, wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
190 hr
= get_typeinfo( INetFwAuthorizedApplication_tid
, &typeinfo
);
193 hr
= ITypeInfo_Invoke( typeinfo
, &This
->INetFwAuthorizedApplication_iface
, dispIdMember
,
194 wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
195 ITypeInfo_Release( typeinfo
);
200 static HRESULT WINAPI
fw_app_get_Name(
201 INetFwAuthorizedApplication
*iface
,
204 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
206 FIXME("%p, %p\n", This
, name
);
210 static HRESULT WINAPI
fw_app_put_Name(
211 INetFwAuthorizedApplication
*iface
,
214 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
216 FIXME("%p, %s\n", This
, debugstr_w(name
));
220 static HRESULT WINAPI
fw_app_get_ProcessImageFileName(
221 INetFwAuthorizedApplication
*iface
,
222 BSTR
*imageFileName
)
224 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
226 FIXME("%p, %p\n", This
, imageFileName
);
230 static HRESULT WINAPI
fw_app_put_ProcessImageFileName(
231 INetFwAuthorizedApplication
*iface
,
234 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
236 FIXME("%p, %s\n", This
, debugstr_w(imageFileName
));
240 static HRESULT WINAPI
fw_app_get_IpVersion(
241 INetFwAuthorizedApplication
*iface
,
242 NET_FW_IP_VERSION
*ipVersion
)
244 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
246 FIXME("%p, %p\n", This
, ipVersion
);
250 static HRESULT WINAPI
fw_app_put_IpVersion(
251 INetFwAuthorizedApplication
*iface
,
252 NET_FW_IP_VERSION ipVersion
)
254 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
256 FIXME("%p, %u\n", This
, ipVersion
);
260 static HRESULT WINAPI
fw_app_get_Scope(
261 INetFwAuthorizedApplication
*iface
,
262 NET_FW_SCOPE
*scope
)
264 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
266 FIXME("%p, %p\n", This
, scope
);
270 static HRESULT WINAPI
fw_app_put_Scope(
271 INetFwAuthorizedApplication
*iface
,
274 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
276 FIXME("%p, %u\n", This
, scope
);
280 static HRESULT WINAPI
fw_app_get_RemoteAddresses(
281 INetFwAuthorizedApplication
*iface
,
284 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
286 FIXME("%p, %p\n", This
, remoteAddrs
);
290 static HRESULT WINAPI
fw_app_put_RemoteAddresses(
291 INetFwAuthorizedApplication
*iface
,
294 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
296 FIXME("%p, %s\n", This
, debugstr_w(remoteAddrs
));
300 static HRESULT WINAPI
fw_app_get_Enabled(
301 INetFwAuthorizedApplication
*iface
,
302 VARIANT_BOOL
*enabled
)
304 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
306 FIXME("%p, %p\n", This
, enabled
);
308 *enabled
= VARIANT_FALSE
;
312 static HRESULT WINAPI
fw_app_put_Enabled(
313 INetFwAuthorizedApplication
*iface
,
314 VARIANT_BOOL enabled
)
316 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
318 FIXME("%p, %d\n", This
, enabled
);
322 static const struct INetFwAuthorizedApplicationVtbl fw_app_vtbl
=
324 fw_app_QueryInterface
,
327 fw_app_GetTypeInfoCount
,
329 fw_app_GetIDsOfNames
,
333 fw_app_get_ProcessImageFileName
,
334 fw_app_put_ProcessImageFileName
,
335 fw_app_get_IpVersion
,
336 fw_app_put_IpVersion
,
339 fw_app_get_RemoteAddresses
,
340 fw_app_put_RemoteAddresses
,
345 HRESULT
NetFwAuthorizedApplication_create( IUnknown
*pUnkOuter
, LPVOID
*ppObj
)
349 TRACE("(%p,%p)\n", pUnkOuter
, ppObj
);
351 fa
= HeapAlloc( GetProcessHeap(), 0, sizeof(*fa
) );
352 if (!fa
) return E_OUTOFMEMORY
;
354 fa
->INetFwAuthorizedApplication_iface
.lpVtbl
= &fw_app_vtbl
;
357 *ppObj
= &fa
->INetFwAuthorizedApplication_iface
;
359 TRACE("returning iface %p\n", *ppObj
);
362 typedef struct fw_apps
364 INetFwAuthorizedApplications INetFwAuthorizedApplications_iface
;
368 static inline fw_apps
*impl_from_INetFwAuthorizedApplications( INetFwAuthorizedApplications
*iface
)
370 return CONTAINING_RECORD(iface
, fw_apps
, INetFwAuthorizedApplications_iface
);
373 static ULONG WINAPI
fw_apps_AddRef(
374 INetFwAuthorizedApplications
*iface
)
376 fw_apps
*fw_apps
= impl_from_INetFwAuthorizedApplications( iface
);
377 return InterlockedIncrement( &fw_apps
->refs
);
380 static ULONG WINAPI
fw_apps_Release(
381 INetFwAuthorizedApplications
*iface
)
383 fw_apps
*fw_apps
= impl_from_INetFwAuthorizedApplications( iface
);
384 LONG refs
= InterlockedDecrement( &fw_apps
->refs
);
387 TRACE("destroying %p\n", fw_apps
);
388 HeapFree( GetProcessHeap(), 0, fw_apps
);
393 static HRESULT WINAPI
fw_apps_QueryInterface(
394 INetFwAuthorizedApplications
*iface
,
398 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
400 TRACE("%p %s %p\n", This
, debugstr_guid( riid
), ppvObject
);
402 if ( IsEqualGUID( riid
, &IID_INetFwAuthorizedApplications
) ||
403 IsEqualGUID( riid
, &IID_IDispatch
) ||
404 IsEqualGUID( riid
, &IID_IUnknown
) )
410 FIXME("interface %s not implemented\n", debugstr_guid(riid
));
411 return E_NOINTERFACE
;
413 INetFwAuthorizedApplications_AddRef( iface
);
417 static HRESULT WINAPI
fw_apps_GetTypeInfoCount(
418 INetFwAuthorizedApplications
*iface
,
421 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
423 FIXME("%p %p\n", This
, pctinfo
);
427 static HRESULT WINAPI
fw_apps_GetTypeInfo(
428 INetFwAuthorizedApplications
*iface
,
431 ITypeInfo
**ppTInfo
)
433 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
435 TRACE("%p %u %u %p\n", This
, iTInfo
, lcid
, ppTInfo
);
436 return get_typeinfo( INetFwAuthorizedApplications_tid
, ppTInfo
);
439 static HRESULT WINAPI
fw_apps_GetIDsOfNames(
440 INetFwAuthorizedApplications
*iface
,
447 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
451 TRACE("%p %s %p %u %u %p\n", This
, debugstr_guid(riid
), rgszNames
, cNames
, lcid
, rgDispId
);
453 hr
= get_typeinfo( INetFwAuthorizedApplications_tid
, &typeinfo
);
456 hr
= ITypeInfo_GetIDsOfNames( typeinfo
, rgszNames
, cNames
, rgDispId
);
457 ITypeInfo_Release( typeinfo
);
462 static HRESULT WINAPI
fw_apps_Invoke(
463 INetFwAuthorizedApplications
*iface
,
468 DISPPARAMS
*pDispParams
,
470 EXCEPINFO
*pExcepInfo
,
473 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
477 TRACE("%p %d %s %d %d %p %p %p %p\n", This
, dispIdMember
, debugstr_guid(riid
),
478 lcid
, wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
480 hr
= get_typeinfo( INetFwAuthorizedApplications_tid
, &typeinfo
);
483 hr
= ITypeInfo_Invoke( typeinfo
, &This
->INetFwAuthorizedApplications_iface
, dispIdMember
,
484 wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
485 ITypeInfo_Release( typeinfo
);
490 static HRESULT WINAPI
fw_apps_get_Count(
491 INetFwAuthorizedApplications
*iface
,
494 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
496 FIXME("%p, %p\n", This
, count
);
500 static HRESULT WINAPI
fw_apps_Add(
501 INetFwAuthorizedApplications
*iface
,
502 INetFwAuthorizedApplication
*app
)
504 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
506 FIXME("%p, %p\n", This
, app
);
510 static HRESULT WINAPI
fw_apps_Remove(
511 INetFwAuthorizedApplications
*iface
,
514 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
516 FIXME("%p, %s\n", This
, debugstr_w(imageFileName
));
520 static HRESULT WINAPI
fw_apps_Item(
521 INetFwAuthorizedApplications
*iface
,
523 INetFwAuthorizedApplication
**app
)
525 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
527 TRACE("%p, %s, %p\n", This
, debugstr_w(imageFileName
), app
);
528 return NetFwAuthorizedApplication_create( NULL
, (void **)app
);
531 static HRESULT WINAPI
fw_apps_get__NewEnum(
532 INetFwAuthorizedApplications
*iface
,
535 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
537 FIXME("%p, %p\n", This
, newEnum
);
541 static const struct INetFwAuthorizedApplicationsVtbl fw_apps_vtbl
=
543 fw_apps_QueryInterface
,
546 fw_apps_GetTypeInfoCount
,
548 fw_apps_GetIDsOfNames
,
557 HRESULT
NetFwAuthorizedApplications_create( IUnknown
*pUnkOuter
, LPVOID
*ppObj
)
561 TRACE("(%p,%p)\n", pUnkOuter
, ppObj
);
563 fa
= HeapAlloc( GetProcessHeap(), 0, sizeof(*fa
) );
564 if (!fa
) return E_OUTOFMEMORY
;
566 fa
->INetFwAuthorizedApplications_iface
.lpVtbl
= &fw_apps_vtbl
;
569 *ppObj
= &fa
->INetFwAuthorizedApplications_iface
;
571 TRACE("returning iface %p\n", *ppObj
);