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
);
37 typedef struct fw_port
39 INetFwOpenPort INetFwOpenPort_iface
;
43 static inline fw_port
*impl_from_INetFwOpenPort( INetFwOpenPort
*iface
)
45 return CONTAINING_RECORD(iface
, fw_port
, INetFwOpenPort_iface
);
48 static ULONG WINAPI
fw_port_AddRef(
49 INetFwOpenPort
*iface
)
51 fw_port
*fw_port
= impl_from_INetFwOpenPort( iface
);
52 return InterlockedIncrement( &fw_port
->refs
);
55 static ULONG WINAPI
fw_port_Release(
56 INetFwOpenPort
*iface
)
58 fw_port
*fw_port
= impl_from_INetFwOpenPort( iface
);
59 LONG refs
= InterlockedDecrement( &fw_port
->refs
);
62 TRACE("destroying %p\n", fw_port
);
63 HeapFree( GetProcessHeap(), 0, fw_port
);
68 static HRESULT WINAPI
fw_port_QueryInterface(
69 INetFwOpenPort
*iface
,
73 fw_port
*This
= impl_from_INetFwOpenPort( iface
);
75 TRACE("%p %s %p\n", This
, debugstr_guid( riid
), ppvObject
);
77 if ( IsEqualGUID( riid
, &IID_INetFwOpenPort
) ||
78 IsEqualGUID( riid
, &IID_IDispatch
) ||
79 IsEqualGUID( riid
, &IID_IUnknown
) )
85 FIXME("interface %s not implemented\n", debugstr_guid(riid
));
88 INetFwOpenPort_AddRef( iface
);
92 static HRESULT WINAPI
fw_port_GetTypeInfoCount(
93 INetFwOpenPort
*iface
,
96 fw_port
*This
= impl_from_INetFwOpenPort( iface
);
98 FIXME("%p %p\n", This
, pctinfo
);
102 static HRESULT WINAPI
fw_port_GetTypeInfo(
103 INetFwOpenPort
*iface
,
106 ITypeInfo
**ppTInfo
)
108 fw_port
*This
= impl_from_INetFwOpenPort( iface
);
110 FIXME("%p %u %u %p\n", This
, iTInfo
, lcid
, ppTInfo
);
114 static HRESULT WINAPI
fw_port_GetIDsOfNames(
115 INetFwOpenPort
*iface
,
122 fw_port
*This
= impl_from_INetFwOpenPort( iface
);
124 FIXME("%p %s %p %u %u %p\n", This
, debugstr_guid(riid
), rgszNames
, cNames
, lcid
, rgDispId
);
128 static HRESULT WINAPI
fw_port_Invoke(
129 INetFwOpenPort
*iface
,
134 DISPPARAMS
*pDispParams
,
136 EXCEPINFO
*pExcepInfo
,
139 fw_port
*This
= impl_from_INetFwOpenPort( iface
);
141 FIXME("%p %d %s %d %d %p %p %p %p\n", This
, dispIdMember
, debugstr_guid(riid
),
142 lcid
, wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
146 static HRESULT WINAPI
fw_port_get_Name(
147 INetFwOpenPort
*iface
,
150 fw_port
*This
= impl_from_INetFwOpenPort( iface
);
152 FIXME("%p %p\n", This
, name
);
156 static HRESULT WINAPI
fw_port_put_Name(
157 INetFwOpenPort
*iface
,
160 fw_port
*This
= impl_from_INetFwOpenPort( iface
);
162 FIXME("%p %s\n", This
, debugstr_w(name
));
166 static HRESULT WINAPI
fw_port_get_IpVersion(
167 INetFwOpenPort
*iface
,
168 NET_FW_IP_VERSION
*ipVersion
)
170 fw_port
*This
= impl_from_INetFwOpenPort( iface
);
172 FIXME("%p %p\n", This
, ipVersion
);
176 static HRESULT WINAPI
fw_port_put_IpVersion(
177 INetFwOpenPort
*iface
,
178 NET_FW_IP_VERSION ipVersion
)
180 fw_port
*This
= impl_from_INetFwOpenPort( iface
);
182 FIXME("%p %u\n", This
, ipVersion
);
186 static HRESULT WINAPI
fw_port_get_Protocol(
187 INetFwOpenPort
*iface
,
188 NET_FW_IP_PROTOCOL
*ipProtocol
)
190 fw_port
*This
= impl_from_INetFwOpenPort( iface
);
192 FIXME("%p %p\n", This
, ipProtocol
);
196 static HRESULT WINAPI
fw_port_put_Protocol(
197 INetFwOpenPort
*iface
,
198 NET_FW_IP_PROTOCOL ipProtocol
)
200 fw_port
*This
= impl_from_INetFwOpenPort( iface
);
202 FIXME("%p %u\n", This
, ipProtocol
);
206 static HRESULT WINAPI
fw_port_get_Port(
207 INetFwOpenPort
*iface
,
210 fw_port
*This
= impl_from_INetFwOpenPort( iface
);
212 FIXME("%p %p\n", This
, portNumber
);
216 static HRESULT WINAPI
fw_port_put_Port(
217 INetFwOpenPort
*iface
,
220 fw_port
*This
= impl_from_INetFwOpenPort( iface
);
222 FIXME("%p %d\n", This
, portNumber
);
226 static HRESULT WINAPI
fw_port_get_Scope(
227 INetFwOpenPort
*iface
,
230 fw_port
*This
= impl_from_INetFwOpenPort( iface
);
232 FIXME("%p %p\n", This
, scope
);
236 static HRESULT WINAPI
fw_port_put_Scope(
237 INetFwOpenPort
*iface
,
240 fw_port
*This
= impl_from_INetFwOpenPort( iface
);
242 FIXME("%p %u\n", This
, scope
);
246 static HRESULT WINAPI
fw_port_get_RemoteAddresses(
247 INetFwOpenPort
*iface
,
250 fw_port
*This
= impl_from_INetFwOpenPort( iface
);
252 FIXME("%p %p\n", This
, remoteAddrs
);
256 static HRESULT WINAPI
fw_port_put_RemoteAddresses(
257 INetFwOpenPort
*iface
,
260 fw_port
*This
= impl_from_INetFwOpenPort( iface
);
262 FIXME("%p %s\n", This
, debugstr_w(remoteAddrs
));
266 static HRESULT WINAPI
fw_port_get_Enabled(
267 INetFwOpenPort
*iface
,
268 VARIANT_BOOL
*enabled
)
270 fw_port
*This
= impl_from_INetFwOpenPort( iface
);
272 FIXME("%p %p\n", This
, enabled
);
274 *enabled
= VARIANT_TRUE
;
278 static HRESULT WINAPI
fw_port_put_Enabled(
279 INetFwOpenPort
*iface
,
280 VARIANT_BOOL enabled
)
282 fw_port
*This
= impl_from_INetFwOpenPort( iface
);
284 FIXME("%p %d\n", This
, enabled
);
288 static HRESULT WINAPI
fw_port_get_BuiltIn(
289 INetFwOpenPort
*iface
,
290 VARIANT_BOOL
*builtIn
)
292 fw_port
*This
= impl_from_INetFwOpenPort( iface
);
294 FIXME("%p %p\n", This
, builtIn
);
298 static const struct INetFwOpenPortVtbl fw_port_vtbl
=
300 fw_port_QueryInterface
,
303 fw_port_GetTypeInfoCount
,
305 fw_port_GetIDsOfNames
,
309 fw_port_get_IpVersion
,
310 fw_port_put_IpVersion
,
311 fw_port_get_Protocol
,
312 fw_port_put_Protocol
,
317 fw_port_get_RemoteAddresses
,
318 fw_port_put_RemoteAddresses
,
324 static HRESULT
NetFwOpenPort_create( IUnknown
*pUnkOuter
, LPVOID
*ppObj
)
328 TRACE("(%p,%p)\n", pUnkOuter
, ppObj
);
330 fp
= HeapAlloc( GetProcessHeap(), 0, sizeof(*fp
) );
331 if (!fp
) return E_OUTOFMEMORY
;
333 fp
->INetFwOpenPort_iface
.lpVtbl
= &fw_port_vtbl
;
336 *ppObj
= &fp
->INetFwOpenPort_iface
;
338 TRACE("returning iface %p\n", *ppObj
);
342 typedef struct fw_ports
344 INetFwOpenPorts INetFwOpenPorts_iface
;
348 static inline fw_ports
*impl_from_INetFwOpenPorts( INetFwOpenPorts
*iface
)
350 return CONTAINING_RECORD(iface
, fw_ports
, INetFwOpenPorts_iface
);
353 static ULONG WINAPI
fw_ports_AddRef(
354 INetFwOpenPorts
*iface
)
356 fw_ports
*fw_ports
= impl_from_INetFwOpenPorts( iface
);
357 return InterlockedIncrement( &fw_ports
->refs
);
360 static ULONG WINAPI
fw_ports_Release(
361 INetFwOpenPorts
*iface
)
363 fw_ports
*fw_ports
= impl_from_INetFwOpenPorts( iface
);
364 LONG refs
= InterlockedDecrement( &fw_ports
->refs
);
367 TRACE("destroying %p\n", fw_ports
);
368 HeapFree( GetProcessHeap(), 0, fw_ports
);
373 static HRESULT WINAPI
fw_ports_QueryInterface(
374 INetFwOpenPorts
*iface
,
378 fw_ports
*This
= impl_from_INetFwOpenPorts( iface
);
380 TRACE("%p %s %p\n", This
, debugstr_guid( riid
), ppvObject
);
382 if ( IsEqualGUID( riid
, &IID_INetFwOpenPorts
) ||
383 IsEqualGUID( riid
, &IID_IDispatch
) ||
384 IsEqualGUID( riid
, &IID_IUnknown
) )
390 FIXME("interface %s not implemented\n", debugstr_guid(riid
));
391 return E_NOINTERFACE
;
393 INetFwOpenPorts_AddRef( iface
);
397 static HRESULT WINAPI
fw_ports_GetTypeInfoCount(
398 INetFwOpenPorts
*iface
,
401 fw_ports
*This
= impl_from_INetFwOpenPorts( iface
);
403 FIXME("%p %p\n", This
, pctinfo
);
407 static HRESULT WINAPI
fw_ports_GetTypeInfo(
408 INetFwOpenPorts
*iface
,
411 ITypeInfo
**ppTInfo
)
413 fw_ports
*This
= impl_from_INetFwOpenPorts( iface
);
415 FIXME("%p %u %u %p\n", This
, iTInfo
, lcid
, ppTInfo
);
419 static HRESULT WINAPI
fw_ports_GetIDsOfNames(
420 INetFwOpenPorts
*iface
,
427 fw_ports
*This
= impl_from_INetFwOpenPorts( iface
);
429 FIXME("%p %s %p %u %u %p\n", This
, debugstr_guid(riid
), rgszNames
, cNames
, lcid
, rgDispId
);
433 static HRESULT WINAPI
fw_ports_Invoke(
434 INetFwOpenPorts
*iface
,
439 DISPPARAMS
*pDispParams
,
441 EXCEPINFO
*pExcepInfo
,
444 fw_ports
*This
= impl_from_INetFwOpenPorts( iface
);
446 FIXME("%p %d %s %d %d %p %p %p %p\n", This
, dispIdMember
, debugstr_guid(riid
),
447 lcid
, wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
451 static HRESULT WINAPI
fw_ports_get_Count(
452 INetFwOpenPorts
*iface
,
455 fw_ports
*This
= impl_from_INetFwOpenPorts( iface
);
457 FIXME("%p, %p\n", This
, count
);
463 static HRESULT WINAPI
fw_ports_Add(
464 INetFwOpenPorts
*iface
,
465 INetFwOpenPort
*port
)
467 fw_ports
*This
= impl_from_INetFwOpenPorts( iface
);
469 FIXME("%p, %p\n", This
, port
);
473 static HRESULT WINAPI
fw_ports_Remove(
474 INetFwOpenPorts
*iface
,
476 NET_FW_IP_PROTOCOL ipProtocol
)
478 fw_ports
*This
= impl_from_INetFwOpenPorts( iface
);
480 FIXME("%p, %d, %u\n", This
, portNumber
, ipProtocol
);
484 static HRESULT WINAPI
fw_ports_Item(
485 INetFwOpenPorts
*iface
,
487 NET_FW_IP_PROTOCOL ipProtocol
,
488 INetFwOpenPort
**openPort
)
491 fw_ports
*This
= impl_from_INetFwOpenPorts( iface
);
493 FIXME("%p, %d, %u, %p\n", This
, portNumber
, ipProtocol
, openPort
);
495 hr
= NetFwOpenPort_create( NULL
, (void **)openPort
);
498 INetFwOpenPort_put_Protocol( *openPort
, ipProtocol
);
499 INetFwOpenPort_put_Port( *openPort
, portNumber
);
504 static HRESULT WINAPI
fw_ports_get__NewEnum(
505 INetFwOpenPorts
*iface
,
508 fw_ports
*This
= impl_from_INetFwOpenPorts( iface
);
510 FIXME("%p, %p\n", This
, newEnum
);
514 static const struct INetFwOpenPortsVtbl fw_ports_vtbl
=
516 fw_ports_QueryInterface
,
519 fw_ports_GetTypeInfoCount
,
520 fw_ports_GetTypeInfo
,
521 fw_ports_GetIDsOfNames
,
527 fw_ports_get__NewEnum
530 HRESULT
NetFwOpenPorts_create( IUnknown
*pUnkOuter
, LPVOID
*ppObj
)
534 TRACE("(%p,%p)\n", pUnkOuter
, ppObj
);
536 fp
= HeapAlloc( GetProcessHeap(), 0, sizeof(*fp
) );
537 if (!fp
) return E_OUTOFMEMORY
;
539 fp
->INetFwOpenPorts_iface
.lpVtbl
= &fw_ports_vtbl
;
542 *ppObj
= &fp
->INetFwOpenPorts_iface
;
544 TRACE("returning iface %p\n", *ppObj
);