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
31 #include "wine/debug.h"
32 #include "wine/unicode.h"
33 #include "hnetcfg_private.h"
35 WINE_DEFAULT_DEBUG_CHANNEL(hnetcfg
);
39 INetFwAuthorizedApplication INetFwAuthorizedApplication_iface
;
43 static inline fw_app
*impl_from_INetFwAuthorizedApplication( INetFwAuthorizedApplication
*iface
)
45 return CONTAINING_RECORD(iface
, fw_app
, INetFwAuthorizedApplication_iface
);
48 static ULONG WINAPI
fw_app_AddRef(
49 INetFwAuthorizedApplication
*iface
)
51 fw_app
*fw_app
= impl_from_INetFwAuthorizedApplication( iface
);
52 return InterlockedIncrement( &fw_app
->refs
);
55 static ULONG WINAPI
fw_app_Release(
56 INetFwAuthorizedApplication
*iface
)
58 fw_app
*fw_app
= impl_from_INetFwAuthorizedApplication( iface
);
59 LONG refs
= InterlockedDecrement( &fw_app
->refs
);
62 TRACE("destroying %p\n", fw_app
);
63 HeapFree( GetProcessHeap(), 0, fw_app
);
68 static HRESULT WINAPI
fw_app_QueryInterface(
69 INetFwAuthorizedApplication
*iface
,
73 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
75 TRACE("%p %s %p\n", This
, debugstr_guid( riid
), ppvObject
);
77 if ( IsEqualGUID( riid
, &IID_INetFwAuthorizedApplication
) ||
78 IsEqualGUID( riid
, &IID_IDispatch
) ||
79 IsEqualGUID( riid
, &IID_IUnknown
) )
85 FIXME("interface %s not implemented\n", debugstr_guid(riid
));
88 INetFwAuthorizedApplication_AddRef( iface
);
92 static HRESULT WINAPI
fw_app_GetTypeInfoCount(
93 INetFwAuthorizedApplication
*iface
,
96 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
98 TRACE("%p %p\n", This
, pctinfo
);
103 static ITypeLib
*typelib
;
104 static ITypeInfo
*typeinfo
[last_tid
];
106 static REFIID tid_id
[] =
108 &IID_INetFwAuthorizedApplication
,
109 &IID_INetFwAuthorizedApplications
,
116 HRESULT
get_typeinfo( enum type_id tid
, ITypeInfo
**ret
)
124 hr
= LoadRegTypeLib( &LIBID_NetFwPublicTypeLib
, 1, 0, LOCALE_SYSTEM_DEFAULT
, &lib
);
127 ERR("LoadRegTypeLib failed: %08x\n", hr
);
130 if (InterlockedCompareExchangePointer( (void **)&typelib
, lib
, NULL
))
131 ITypeLib_Release( lib
);
137 hr
= ITypeLib_GetTypeInfoOfGuid( typelib
, tid_id
[tid
], &info
);
140 ERR("GetTypeInfoOfGuid(%s) failed: %08x\n", debugstr_guid(tid_id
[tid
]), hr
);
143 if (InterlockedCompareExchangePointer( (void **)(typeinfo
+ tid
), info
, NULL
))
144 ITypeInfo_Release( info
);
146 *ret
= typeinfo
[tid
];
150 static HRESULT WINAPI
fw_app_GetTypeInfo(
151 INetFwAuthorizedApplication
*iface
,
154 ITypeInfo
**ppTInfo
)
156 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
158 TRACE("%p %u %u %p\n", This
, iTInfo
, lcid
, ppTInfo
);
159 return get_typeinfo( INetFwAuthorizedApplication_tid
, ppTInfo
);
162 static HRESULT WINAPI
fw_app_GetIDsOfNames(
163 INetFwAuthorizedApplication
*iface
,
170 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
174 TRACE("%p %s %p %u %u %p\n", This
, debugstr_guid(riid
), rgszNames
, cNames
, lcid
, rgDispId
);
176 hr
= get_typeinfo( INetFwAuthorizedApplication_tid
, &typeinfo
);
179 hr
= ITypeInfo_GetIDsOfNames( typeinfo
, rgszNames
, cNames
, rgDispId
);
180 ITypeInfo_Release( typeinfo
);
185 static HRESULT WINAPI
fw_app_Invoke(
186 INetFwAuthorizedApplication
*iface
,
191 DISPPARAMS
*pDispParams
,
193 EXCEPINFO
*pExcepInfo
,
196 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
200 TRACE("%p %d %s %d %d %p %p %p %p\n", This
, dispIdMember
, debugstr_guid(riid
),
201 lcid
, wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
203 hr
= get_typeinfo( INetFwAuthorizedApplication_tid
, &typeinfo
);
206 hr
= ITypeInfo_Invoke( typeinfo
, &This
->INetFwAuthorizedApplication_iface
, dispIdMember
,
207 wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
208 ITypeInfo_Release( typeinfo
);
213 static HRESULT WINAPI
fw_app_get_Name(
214 INetFwAuthorizedApplication
*iface
,
217 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
219 FIXME("%p, %p\n", This
, name
);
223 static HRESULT WINAPI
fw_app_put_Name(
224 INetFwAuthorizedApplication
*iface
,
227 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
229 FIXME("%p, %s\n", This
, debugstr_w(name
));
233 static HRESULT WINAPI
fw_app_get_ProcessImageFileName(
234 INetFwAuthorizedApplication
*iface
,
235 BSTR
*imageFileName
)
237 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
239 FIXME("%p, %p\n", This
, imageFileName
);
243 static HRESULT WINAPI
fw_app_put_ProcessImageFileName(
244 INetFwAuthorizedApplication
*iface
,
247 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
249 FIXME("%p, %s\n", This
, debugstr_w(imageFileName
));
253 static HRESULT WINAPI
fw_app_get_IpVersion(
254 INetFwAuthorizedApplication
*iface
,
255 NET_FW_IP_VERSION
*ipVersion
)
257 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
259 FIXME("%p, %p\n", This
, ipVersion
);
263 static HRESULT WINAPI
fw_app_put_IpVersion(
264 INetFwAuthorizedApplication
*iface
,
265 NET_FW_IP_VERSION ipVersion
)
267 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
269 FIXME("%p, %u\n", This
, ipVersion
);
273 static HRESULT WINAPI
fw_app_get_Scope(
274 INetFwAuthorizedApplication
*iface
,
275 NET_FW_SCOPE
*scope
)
277 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
279 FIXME("%p, %p\n", This
, scope
);
283 static HRESULT WINAPI
fw_app_put_Scope(
284 INetFwAuthorizedApplication
*iface
,
287 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
289 FIXME("%p, %u\n", This
, scope
);
293 static HRESULT WINAPI
fw_app_get_RemoteAddresses(
294 INetFwAuthorizedApplication
*iface
,
297 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
299 FIXME("%p, %p\n", This
, remoteAddrs
);
303 static HRESULT WINAPI
fw_app_put_RemoteAddresses(
304 INetFwAuthorizedApplication
*iface
,
307 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
309 FIXME("%p, %s\n", This
, debugstr_w(remoteAddrs
));
313 static HRESULT WINAPI
fw_app_get_Enabled(
314 INetFwAuthorizedApplication
*iface
,
315 VARIANT_BOOL
*enabled
)
317 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
319 FIXME("%p, %p\n", This
, enabled
);
321 *enabled
= VARIANT_FALSE
;
325 static HRESULT WINAPI
fw_app_put_Enabled(
326 INetFwAuthorizedApplication
*iface
,
327 VARIANT_BOOL enabled
)
329 fw_app
*This
= impl_from_INetFwAuthorizedApplication( iface
);
331 FIXME("%p, %d\n", This
, enabled
);
335 static const struct INetFwAuthorizedApplicationVtbl fw_app_vtbl
=
337 fw_app_QueryInterface
,
340 fw_app_GetTypeInfoCount
,
342 fw_app_GetIDsOfNames
,
346 fw_app_get_ProcessImageFileName
,
347 fw_app_put_ProcessImageFileName
,
348 fw_app_get_IpVersion
,
349 fw_app_put_IpVersion
,
352 fw_app_get_RemoteAddresses
,
353 fw_app_put_RemoteAddresses
,
358 HRESULT
NetFwAuthorizedApplication_create( IUnknown
*pUnkOuter
, LPVOID
*ppObj
)
362 TRACE("(%p,%p)\n", pUnkOuter
, ppObj
);
364 fa
= HeapAlloc( GetProcessHeap(), 0, sizeof(*fa
) );
365 if (!fa
) return E_OUTOFMEMORY
;
367 fa
->INetFwAuthorizedApplication_iface
.lpVtbl
= &fw_app_vtbl
;
370 *ppObj
= &fa
->INetFwAuthorizedApplication_iface
;
372 TRACE("returning iface %p\n", *ppObj
);
375 typedef struct fw_apps
377 INetFwAuthorizedApplications INetFwAuthorizedApplications_iface
;
381 static inline fw_apps
*impl_from_INetFwAuthorizedApplications( INetFwAuthorizedApplications
*iface
)
383 return CONTAINING_RECORD(iface
, fw_apps
, INetFwAuthorizedApplications_iface
);
386 static ULONG WINAPI
fw_apps_AddRef(
387 INetFwAuthorizedApplications
*iface
)
389 fw_apps
*fw_apps
= impl_from_INetFwAuthorizedApplications( iface
);
390 return InterlockedIncrement( &fw_apps
->refs
);
393 static ULONG WINAPI
fw_apps_Release(
394 INetFwAuthorizedApplications
*iface
)
396 fw_apps
*fw_apps
= impl_from_INetFwAuthorizedApplications( iface
);
397 LONG refs
= InterlockedDecrement( &fw_apps
->refs
);
400 TRACE("destroying %p\n", fw_apps
);
401 HeapFree( GetProcessHeap(), 0, fw_apps
);
406 static HRESULT WINAPI
fw_apps_QueryInterface(
407 INetFwAuthorizedApplications
*iface
,
411 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
413 TRACE("%p %s %p\n", This
, debugstr_guid( riid
), ppvObject
);
415 if ( IsEqualGUID( riid
, &IID_INetFwAuthorizedApplications
) ||
416 IsEqualGUID( riid
, &IID_IDispatch
) ||
417 IsEqualGUID( riid
, &IID_IUnknown
) )
423 FIXME("interface %s not implemented\n", debugstr_guid(riid
));
424 return E_NOINTERFACE
;
426 INetFwAuthorizedApplications_AddRef( iface
);
430 static HRESULT WINAPI
fw_apps_GetTypeInfoCount(
431 INetFwAuthorizedApplications
*iface
,
434 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
436 FIXME("%p %p\n", This
, pctinfo
);
440 static HRESULT WINAPI
fw_apps_GetTypeInfo(
441 INetFwAuthorizedApplications
*iface
,
444 ITypeInfo
**ppTInfo
)
446 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
448 TRACE("%p %u %u %p\n", This
, iTInfo
, lcid
, ppTInfo
);
449 return get_typeinfo( INetFwAuthorizedApplications_tid
, ppTInfo
);
452 static HRESULT WINAPI
fw_apps_GetIDsOfNames(
453 INetFwAuthorizedApplications
*iface
,
460 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
464 TRACE("%p %s %p %u %u %p\n", This
, debugstr_guid(riid
), rgszNames
, cNames
, lcid
, rgDispId
);
466 hr
= get_typeinfo( INetFwAuthorizedApplications_tid
, &typeinfo
);
469 hr
= ITypeInfo_GetIDsOfNames( typeinfo
, rgszNames
, cNames
, rgDispId
);
470 ITypeInfo_Release( typeinfo
);
475 static HRESULT WINAPI
fw_apps_Invoke(
476 INetFwAuthorizedApplications
*iface
,
481 DISPPARAMS
*pDispParams
,
483 EXCEPINFO
*pExcepInfo
,
486 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
490 TRACE("%p %d %s %d %d %p %p %p %p\n", This
, dispIdMember
, debugstr_guid(riid
),
491 lcid
, wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
493 hr
= get_typeinfo( INetFwAuthorizedApplications_tid
, &typeinfo
);
496 hr
= ITypeInfo_Invoke( typeinfo
, &This
->INetFwAuthorizedApplications_iface
, dispIdMember
,
497 wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
498 ITypeInfo_Release( typeinfo
);
503 static HRESULT WINAPI
fw_apps_get_Count(
504 INetFwAuthorizedApplications
*iface
,
507 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
509 FIXME("%p, %p\n", This
, count
);
513 static HRESULT WINAPI
fw_apps_Add(
514 INetFwAuthorizedApplications
*iface
,
515 INetFwAuthorizedApplication
*app
)
517 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
519 FIXME("%p, %p\n", This
, app
);
523 static HRESULT WINAPI
fw_apps_Remove(
524 INetFwAuthorizedApplications
*iface
,
527 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
529 FIXME("%p, %s\n", This
, debugstr_w(imageFileName
));
533 static HRESULT WINAPI
fw_apps_Item(
534 INetFwAuthorizedApplications
*iface
,
536 INetFwAuthorizedApplication
**app
)
538 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
540 TRACE("%p, %s, %p\n", This
, debugstr_w(imageFileName
), app
);
541 return NetFwAuthorizedApplication_create( NULL
, (void **)app
);
544 static HRESULT WINAPI
fw_apps_get__NewEnum(
545 INetFwAuthorizedApplications
*iface
,
548 fw_apps
*This
= impl_from_INetFwAuthorizedApplications( iface
);
550 FIXME("%p, %p\n", This
, newEnum
);
554 static const struct INetFwAuthorizedApplicationsVtbl fw_apps_vtbl
=
556 fw_apps_QueryInterface
,
559 fw_apps_GetTypeInfoCount
,
561 fw_apps_GetIDsOfNames
,
570 HRESULT
NetFwAuthorizedApplications_create( IUnknown
*pUnkOuter
, LPVOID
*ppObj
)
574 TRACE("(%p,%p)\n", pUnkOuter
, ppObj
);
576 fa
= HeapAlloc( GetProcessHeap(), 0, sizeof(*fa
) );
577 if (!fa
) return E_OUTOFMEMORY
;
579 fa
->INetFwAuthorizedApplications_iface
.lpVtbl
= &fw_apps_vtbl
;
582 *ppObj
= &fa
->INetFwAuthorizedApplications_iface
;
584 TRACE("returning iface %p\n", *ppObj
);