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
,
102 HRESULT
get_typeinfo( enum type_id tid
, ITypeInfo
**ret
)
110 hr
= LoadRegTypeLib( &LIBID_NetFwPublicTypeLib
, 1, 0, LOCALE_SYSTEM_DEFAULT
, &lib
);
113 ERR("LoadRegTypeLib failed: %08x\n", hr
);
116 if (InterlockedCompareExchangePointer( (void **)&typelib
, lib
, NULL
))
117 ITypeLib_Release( lib
);
123 hr
= ITypeLib_GetTypeInfoOfGuid( typelib
, tid_id
[tid
], &info
);
126 ERR("GetTypeInfoOfGuid(%s) failed: %08x\n", debugstr_guid(tid_id
[tid
]), hr
);
129 if (InterlockedCompareExchangePointer( (void **)(typeinfo
+ tid
), info
, NULL
))
130 ITypeInfo_Release( info
);
132 *ret
= typeinfo
[tid
];
136 static HRESULT WINAPI
fw_app_GetTypeInfo(
137 INetFwAuthorizedApplication
*iface
,
140 ITypeInfo
**ppTInfo
)
142 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
144 TRACE("%p %u %u %p\n", This
, iTInfo
, lcid
, ppTInfo
);
145 return get_typeinfo( INetFwAuthorizedApplication_tid
, ppTInfo
);
148 static HRESULT WINAPI
fw_app_GetIDsOfNames(
149 INetFwAuthorizedApplication
*iface
,
156 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
160 TRACE("%p %s %p %u %u %p\n", This
, debugstr_guid(riid
), rgszNames
, cNames
, lcid
, rgDispId
);
162 hr
= get_typeinfo( INetFwAuthorizedApplication_tid
, &typeinfo
);
165 hr
= ITypeInfo_GetIDsOfNames( typeinfo
, rgszNames
, cNames
, rgDispId
);
166 ITypeInfo_Release( typeinfo
);
171 static HRESULT WINAPI
fw_app_Invoke(
172 INetFwAuthorizedApplication
*iface
,
177 DISPPARAMS
*pDispParams
,
179 EXCEPINFO
*pExcepInfo
,
182 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
186 TRACE("%p %d %s %d %d %p %p %p %p\n", This
, dispIdMember
, debugstr_guid(riid
),
187 lcid
, wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
189 hr
= get_typeinfo( INetFwAuthorizedApplication_tid
, &typeinfo
);
192 hr
= ITypeInfo_Invoke( typeinfo
, &This
->INetFwAuthorizedApplication_iface
, dispIdMember
,
193 wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
194 ITypeInfo_Release( typeinfo
);
199 static HRESULT WINAPI
fw_app_get_Name(
200 INetFwAuthorizedApplication
*iface
,
203 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
205 FIXME("%p, %p\n", This
, name
);
209 static HRESULT WINAPI
fw_app_put_Name(
210 INetFwAuthorizedApplication
*iface
,
213 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
215 FIXME("%p, %s\n", This
, debugstr_w(name
));
219 static HRESULT WINAPI
fw_app_get_ProcessImageFileName(
220 INetFwAuthorizedApplication
*iface
,
221 BSTR
*imageFileName
)
223 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
225 FIXME("%p, %p\n", This
, imageFileName
);
229 static HRESULT WINAPI
fw_app_put_ProcessImageFileName(
230 INetFwAuthorizedApplication
*iface
,
233 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
235 FIXME("%p, %s\n", This
, debugstr_w(imageFileName
));
239 static HRESULT WINAPI
fw_app_get_IpVersion(
240 INetFwAuthorizedApplication
*iface
,
241 NET_FW_IP_VERSION
*ipVersion
)
243 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
245 FIXME("%p, %p\n", This
, ipVersion
);
249 static HRESULT WINAPI
fw_app_put_IpVersion(
250 INetFwAuthorizedApplication
*iface
,
251 NET_FW_IP_VERSION ipVersion
)
253 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
255 FIXME("%p, %u\n", This
, ipVersion
);
259 static HRESULT WINAPI
fw_app_get_Scope(
260 INetFwAuthorizedApplication
*iface
,
261 NET_FW_SCOPE
*scope
)
263 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
265 FIXME("%p, %p\n", This
, scope
);
269 static HRESULT WINAPI
fw_app_put_Scope(
270 INetFwAuthorizedApplication
*iface
,
273 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
275 FIXME("%p, %u\n", This
, scope
);
279 static HRESULT WINAPI
fw_app_get_RemoteAddresses(
280 INetFwAuthorizedApplication
*iface
,
283 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
285 FIXME("%p, %p\n", This
, remoteAddrs
);
289 static HRESULT WINAPI
fw_app_put_RemoteAddresses(
290 INetFwAuthorizedApplication
*iface
,
293 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
295 FIXME("%p, %s\n", This
, debugstr_w(remoteAddrs
));
299 static HRESULT WINAPI
fw_app_get_Enabled(
300 INetFwAuthorizedApplication
*iface
,
301 VARIANT_BOOL
*enabled
)
303 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
305 FIXME("%p, %p\n", This
, enabled
);
307 *enabled
= VARIANT_FALSE
;
311 static HRESULT WINAPI
fw_app_put_Enabled(
312 INetFwAuthorizedApplication
*iface
,
313 VARIANT_BOOL enabled
)
315 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
317 FIXME("%p, %d\n", This
, enabled
);
321 static const struct INetFwAuthorizedApplicationVtbl fw_app_vtbl
=
323 fw_app_QueryInterface
,
326 fw_app_GetTypeInfoCount
,
328 fw_app_GetIDsOfNames
,
332 fw_app_get_ProcessImageFileName
,
333 fw_app_put_ProcessImageFileName
,
334 fw_app_get_IpVersion
,
335 fw_app_put_IpVersion
,
338 fw_app_get_RemoteAddresses
,
339 fw_app_put_RemoteAddresses
,
344 HRESULT
NetFwAuthorizedApplication_create( IUnknown
*pUnkOuter
, LPVOID
*ppObj
)
348 TRACE("(%p,%p)\n", pUnkOuter
, ppObj
);
350 fa
= HeapAlloc( GetProcessHeap(), 0, sizeof(*fa
) );
351 if (!fa
) return E_OUTOFMEMORY
;
353 fa
->INetFwAuthorizedApplication_iface
.lpVtbl
= &fw_app_vtbl
;
356 *ppObj
= &fa
->INetFwAuthorizedApplication_iface
;
358 TRACE("returning iface %p\n", *ppObj
);
361 typedef struct fw_apps
363 INetFwAuthorizedApplications INetFwAuthorizedApplications_iface
;
367 static inline fw_apps
*impl_from_INetFwAuthorizedApplications( INetFwAuthorizedApplications
*iface
)
369 return CONTAINING_RECORD(iface
, fw_apps
, INetFwAuthorizedApplications_iface
);
372 static ULONG WINAPI
fw_apps_AddRef(
373 INetFwAuthorizedApplications
*iface
)
375 fw_apps
*fw_apps
= impl_from_INetFwAuthorizedApplications( iface
);
376 return InterlockedIncrement( &fw_apps
->refs
);
379 static ULONG WINAPI
fw_apps_Release(
380 INetFwAuthorizedApplications
*iface
)
382 fw_apps
*fw_apps
= impl_from_INetFwAuthorizedApplications( iface
);
383 LONG refs
= InterlockedDecrement( &fw_apps
->refs
);
386 TRACE("destroying %p\n", fw_apps
);
387 HeapFree( GetProcessHeap(), 0, fw_apps
);
392 static HRESULT WINAPI
fw_apps_QueryInterface(
393 INetFwAuthorizedApplications
*iface
,
397 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
399 TRACE("%p %s %p\n", This
, debugstr_guid( riid
), ppvObject
);
401 if ( IsEqualGUID( riid
, &IID_INetFwAuthorizedApplications
) ||
402 IsEqualGUID( riid
, &IID_IDispatch
) ||
403 IsEqualGUID( riid
, &IID_IUnknown
) )
409 FIXME("interface %s not implemented\n", debugstr_guid(riid
));
410 return E_NOINTERFACE
;
412 INetFwAuthorizedApplications_AddRef( iface
);
416 static HRESULT WINAPI
fw_apps_GetTypeInfoCount(
417 INetFwAuthorizedApplications
*iface
,
420 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
422 FIXME("%p %p\n", This
, pctinfo
);
426 static HRESULT WINAPI
fw_apps_GetTypeInfo(
427 INetFwAuthorizedApplications
*iface
,
430 ITypeInfo
**ppTInfo
)
432 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
434 TRACE("%p %u %u %p\n", This
, iTInfo
, lcid
, ppTInfo
);
435 return get_typeinfo( INetFwAuthorizedApplications_tid
, ppTInfo
);
438 static HRESULT WINAPI
fw_apps_GetIDsOfNames(
439 INetFwAuthorizedApplications
*iface
,
446 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
450 TRACE("%p %s %p %u %u %p\n", This
, debugstr_guid(riid
), rgszNames
, cNames
, lcid
, rgDispId
);
452 hr
= get_typeinfo( INetFwAuthorizedApplications_tid
, &typeinfo
);
455 hr
= ITypeInfo_GetIDsOfNames( typeinfo
, rgszNames
, cNames
, rgDispId
);
456 ITypeInfo_Release( typeinfo
);
461 static HRESULT WINAPI
fw_apps_Invoke(
462 INetFwAuthorizedApplications
*iface
,
467 DISPPARAMS
*pDispParams
,
469 EXCEPINFO
*pExcepInfo
,
472 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
476 TRACE("%p %d %s %d %d %p %p %p %p\n", This
, dispIdMember
, debugstr_guid(riid
),
477 lcid
, wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
479 hr
= get_typeinfo( INetFwAuthorizedApplications_tid
, &typeinfo
);
482 hr
= ITypeInfo_Invoke( typeinfo
, &This
->INetFwAuthorizedApplications_iface
, dispIdMember
,
483 wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
484 ITypeInfo_Release( typeinfo
);
489 static HRESULT WINAPI
fw_apps_get_Count(
490 INetFwAuthorizedApplications
*iface
,
493 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
495 FIXME("%p, %p\n", This
, count
);
499 static HRESULT WINAPI
fw_apps_Add(
500 INetFwAuthorizedApplications
*iface
,
501 INetFwAuthorizedApplication
*app
)
503 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
505 FIXME("%p, %p\n", This
, app
);
509 static HRESULT WINAPI
fw_apps_Remove(
510 INetFwAuthorizedApplications
*iface
,
513 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
515 FIXME("%p, %s\n", This
, debugstr_w(imageFileName
));
519 static HRESULT WINAPI
fw_apps_Item(
520 INetFwAuthorizedApplications
*iface
,
522 INetFwAuthorizedApplication
**app
)
524 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
526 TRACE("%p, %s, %p\n", This
, debugstr_w(imageFileName
), app
);
527 return NetFwAuthorizedApplication_create( NULL
, (void **)app
);
530 static HRESULT WINAPI
fw_apps_get__NewEnum(
531 INetFwAuthorizedApplications
*iface
,
534 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
536 FIXME("%p, %p\n", This
, newEnum
);
540 static const struct INetFwAuthorizedApplicationsVtbl fw_apps_vtbl
=
542 fw_apps_QueryInterface
,
545 fw_apps_GetTypeInfoCount
,
547 fw_apps_GetIDsOfNames
,
556 HRESULT
NetFwAuthorizedApplications_create( IUnknown
*pUnkOuter
, LPVOID
*ppObj
)
560 TRACE("(%p,%p)\n", pUnkOuter
, ppObj
);
562 fa
= HeapAlloc( GetProcessHeap(), 0, sizeof(*fa
) );
563 if (!fa
) return E_OUTOFMEMORY
;
565 fa
->INetFwAuthorizedApplications_iface
.lpVtbl
= &fw_apps_vtbl
;
568 *ppObj
= &fa
->INetFwAuthorizedApplications_iface
;
570 TRACE("returning iface %p\n", *ppObj
);