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);