ReactOS 0.4.15-dev-7924-g5949c20
service.c File Reference
#include <stdarg.h>
#include <stdio.h>
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
#include "ole2.h"
#include "netfw.h"
#include "wine/debug.h"
#include "hnetcfg_private.h"
Include dependency graph for service.c:

Go to the source code of this file.

Classes

struct  fw_service
 
struct  fw_services
 

Macros

#define COBJMACROS
 

Typedefs

typedef struct fw_service fw_service
 
typedef struct fw_services fw_services
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (hnetcfg)
 
static fw_serviceimpl_from_INetFwService (INetFwService *iface)
 
static ULONG WINAPI fw_service_AddRef (INetFwService *iface)
 
static ULONG WINAPI fw_service_Release (INetFwService *iface)
 
static HRESULT WINAPI fw_service_QueryInterface (INetFwService *iface, REFIID riid, void **ppvObject)
 
static HRESULT WINAPI fw_service_GetTypeInfoCount (INetFwService *iface, UINT *pctinfo)
 
static HRESULT WINAPI fw_service_GetTypeInfo (INetFwService *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
 
static HRESULT WINAPI fw_service_GetIDsOfNames (INetFwService *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
 
static HRESULT WINAPI fw_service_Invoke (INetFwService *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
 
static HRESULT WINAPI fw_service_get_Name (INetFwService *iface, BSTR *name)
 
static HRESULT WINAPI fw_service_get_Type (INetFwService *iface, NET_FW_SERVICE_TYPE *type)
 
static HRESULT WINAPI fw_service_get_Customized (INetFwService *iface, VARIANT_BOOL *customized)
 
static HRESULT WINAPI fw_service_get_IpVersion (INetFwService *iface, NET_FW_IP_VERSION *ipVersion)
 
static HRESULT WINAPI fw_service_put_IpVersion (INetFwService *iface, NET_FW_IP_VERSION ipVersion)
 
static HRESULT WINAPI fw_service_get_Scope (INetFwService *iface, NET_FW_SCOPE *scope)
 
static HRESULT WINAPI fw_service_put_Scope (INetFwService *iface, NET_FW_SCOPE scope)
 
static HRESULT WINAPI fw_service_get_RemoteAddresses (INetFwService *iface, BSTR *remoteAddrs)
 
static HRESULT WINAPI fw_service_put_RemoteAddresses (INetFwService *iface, BSTR remoteAddrs)
 
static HRESULT WINAPI fw_service_get_Enabled (INetFwService *iface, VARIANT_BOOL *enabled)
 
static HRESULT WINAPI fw_service_put_Enabled (INetFwService *iface, VARIANT_BOOL enabled)
 
static HRESULT WINAPI fw_service_get_GloballyOpenPorts (INetFwService *iface, INetFwOpenPorts **openPorts)
 
static HRESULT NetFwService_create (IUnknown *pUnkOuter, LPVOID *ppObj)
 
static fw_servicesimpl_from_INetFwServices (INetFwServices *iface)
 
static ULONG WINAPI fw_services_AddRef (INetFwServices *iface)
 
static ULONG WINAPI fw_services_Release (INetFwServices *iface)
 
static HRESULT WINAPI fw_services_QueryInterface (INetFwServices *iface, REFIID riid, void **ppvObject)
 
static HRESULT WINAPI fw_services_GetTypeInfoCount (INetFwServices *iface, UINT *pctinfo)
 
static HRESULT WINAPI fw_services_GetTypeInfo (INetFwServices *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
 
static HRESULT WINAPI fw_services_GetIDsOfNames (INetFwServices *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
 
static HRESULT WINAPI fw_services_Invoke (INetFwServices *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
 
static HRESULT WINAPI fw_services_get_Count (INetFwServices *iface, LONG *count)
 
static HRESULT WINAPI fw_services_Item (INetFwServices *iface, NET_FW_SERVICE_TYPE svcType, INetFwService **service)
 
static HRESULT WINAPI fw_services_get__NewEnum (INetFwServices *iface, IUnknown **newEnum)
 
HRESULT NetFwServices_create (IUnknown *pUnkOuter, LPVOID *ppObj)
 

Variables

static const struct INetFwServiceVtbl fw_service_vtbl
 
static const struct INetFwServicesVtbl fw_services_vtbl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 22 of file service.c.

Typedef Documentation

◆ fw_service

◆ fw_services

Function Documentation

◆ fw_service_AddRef()

static ULONG WINAPI fw_service_AddRef ( INetFwService iface)
static

Definition at line 46 of file service.c.

48{
51}
#define InterlockedIncrement
Definition: armddk.h:53
static fw_service * impl_from_INetFwService(INetFwService *iface)
Definition: service.c:41
LONG refs
Definition: service.c:38

◆ fw_service_get_Customized()

static HRESULT WINAPI fw_service_get_Customized ( INetFwService iface,
VARIANT_BOOL customized 
)
static

Definition at line 164 of file service.c.

167{
169
170 FIXME("%p %p\n", This, customized);
171 return E_NOTIMPL;
172}
#define FIXME(fmt,...)
Definition: debug.h:111
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ fw_service_get_Enabled()

static HRESULT WINAPI fw_service_get_Enabled ( INetFwService iface,
VARIANT_BOOL enabled 
)
static

Definition at line 234 of file service.c.

237{
239
240 FIXME("%p %p\n", This, enabled);
241 return E_NOTIMPL;
242}
GLenum GLenum GLsizei const GLuint GLboolean enabled
Definition: glext.h:7750

◆ fw_service_get_GloballyOpenPorts()

static HRESULT WINAPI fw_service_get_GloballyOpenPorts ( INetFwService iface,
INetFwOpenPorts **  openPorts 
)
static

Definition at line 254 of file service.c.

257{
259
260 TRACE("%p %p\n", This, openPorts);
261 return NetFwOpenPorts_create( NULL, (void **)openPorts );
262}
#define NULL
Definition: types.h:112
HRESULT NetFwOpenPorts_create(IUnknown *, LPVOID *) DECLSPEC_HIDDEN
Definition: port.c:589
#define TRACE(s)
Definition: solgame.cpp:4

◆ fw_service_get_IpVersion()

static HRESULT WINAPI fw_service_get_IpVersion ( INetFwService iface,
NET_FW_IP_VERSION ipVersion 
)
static

Definition at line 174 of file service.c.

177{
179
180 FIXME("%p %p\n", This, ipVersion);
181 return E_NOTIMPL;
182}

◆ fw_service_get_Name()

static HRESULT WINAPI fw_service_get_Name ( INetFwService iface,
BSTR name 
)
static

Definition at line 144 of file service.c.

147{
149
150 FIXME("%p %p\n", This, name);
151 return E_NOTIMPL;
152}
Definition: name.c:39

◆ fw_service_get_RemoteAddresses()

static HRESULT WINAPI fw_service_get_RemoteAddresses ( INetFwService iface,
BSTR remoteAddrs 
)
static

Definition at line 214 of file service.c.

217{
219
220 FIXME("%p %p\n", This, remoteAddrs);
221 return E_NOTIMPL;
222}

◆ fw_service_get_Scope()

static HRESULT WINAPI fw_service_get_Scope ( INetFwService iface,
NET_FW_SCOPE scope 
)
static

Definition at line 194 of file service.c.

197{
199
200 FIXME("%p %p\n", This, scope);
201 return E_NOTIMPL;
202}

◆ fw_service_get_Type()

static HRESULT WINAPI fw_service_get_Type ( INetFwService iface,
NET_FW_SERVICE_TYPE type 
)
static

Definition at line 154 of file service.c.

157{
159
160 FIXME("%p %p\n", This, type);
161 return E_NOTIMPL;
162}
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545

◆ fw_service_GetIDsOfNames()

static HRESULT WINAPI fw_service_GetIDsOfNames ( INetFwService iface,
REFIID  riid,
LPOLESTR rgszNames,
UINT  cNames,
LCID  lcid,
DISPID rgDispId 
)
static

Definition at line 112 of file service.c.

119{
121
122 FIXME("%p %s %p %u %u %p\n", This, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId);
123 return E_NOTIMPL;
124}
REFIID riid
Definition: atlbase.h:39
#define debugstr_guid
Definition: kernel32.h:35

◆ fw_service_GetTypeInfo()

static HRESULT WINAPI fw_service_GetTypeInfo ( INetFwService iface,
UINT  iTInfo,
LCID  lcid,
ITypeInfo **  ppTInfo 
)
static

Definition at line 100 of file service.c.

105{
107
108 FIXME("%p %u %u %p\n", This, iTInfo, lcid, ppTInfo);
109 return E_NOTIMPL;
110}

◆ fw_service_GetTypeInfoCount()

static HRESULT WINAPI fw_service_GetTypeInfoCount ( INetFwService iface,
UINT pctinfo 
)
static

Definition at line 90 of file service.c.

93{
95
96 FIXME("%p %p\n", This, pctinfo);
97 return E_NOTIMPL;
98}

◆ fw_service_Invoke()

static HRESULT WINAPI fw_service_Invoke ( INetFwService iface,
DISPID  dispIdMember,
REFIID  riid,
LCID  lcid,
WORD  wFlags,
DISPPARAMS *  pDispParams,
VARIANT pVarResult,
EXCEPINFO *  pExcepInfo,
UINT puArgErr 
)
static

Definition at line 126 of file service.c.

136{
138
139 FIXME("%p %d %s %d %d %p %p %p %p\n", This, dispIdMember, debugstr_guid(riid),
140 lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
141 return E_NOTIMPL;
142}
_In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon.h:531

◆ fw_service_put_Enabled()

static HRESULT WINAPI fw_service_put_Enabled ( INetFwService iface,
VARIANT_BOOL  enabled 
)
static

Definition at line 244 of file service.c.

247{
249
250 FIXME("%p %d\n", This, enabled);
251 return E_NOTIMPL;
252}

◆ fw_service_put_IpVersion()

static HRESULT WINAPI fw_service_put_IpVersion ( INetFwService iface,
NET_FW_IP_VERSION  ipVersion 
)
static

Definition at line 184 of file service.c.

187{
189
190 FIXME("%p %u\n", This, ipVersion);
191 return E_NOTIMPL;
192}

◆ fw_service_put_RemoteAddresses()

static HRESULT WINAPI fw_service_put_RemoteAddresses ( INetFwService iface,
BSTR  remoteAddrs 
)
static

Definition at line 224 of file service.c.

227{
229
230 FIXME("%p %s\n", This, debugstr_w(remoteAddrs));
231 return E_NOTIMPL;
232}
#define debugstr_w
Definition: kernel32.h:32

◆ fw_service_put_Scope()

static HRESULT WINAPI fw_service_put_Scope ( INetFwService iface,
NET_FW_SCOPE  scope 
)
static

Definition at line 204 of file service.c.

207{
209
210 FIXME("%p %u\n", This, scope);
211 return E_NOTIMPL;
212}

◆ fw_service_QueryInterface()

static HRESULT WINAPI fw_service_QueryInterface ( INetFwService iface,
REFIID  riid,
void **  ppvObject 
)
static

Definition at line 66 of file service.c.

70{
72
73 TRACE("%p %s %p\n", This, debugstr_guid( riid ), ppvObject );
74
75 if ( IsEqualGUID( riid, &IID_INetFwService ) ||
78 {
79 *ppvObject = iface;
80 }
81 else
82 {
83 FIXME("interface %s not implemented\n", debugstr_guid(riid));
84 return E_NOINTERFACE;
85 }
86 INetFwService_AddRef( iface );
87 return S_OK;
88}
const GUID IID_IUnknown
#define S_OK
Definition: intsafe.h:52
const GUID IID_IDispatch
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
Definition: wincrypt.h:6082
#define E_NOINTERFACE
Definition: winerror.h:2364

◆ fw_service_Release()

static ULONG WINAPI fw_service_Release ( INetFwService iface)
static

Definition at line 53 of file service.c.

55{
58 if (!refs)
59 {
60 TRACE("destroying %p\n", fw_service);
62 }
63 return refs;
64}
#define InterlockedDecrement
Definition: armddk.h:52
#define GetProcessHeap()
Definition: compat.h:736
#define HeapFree(x, y, z)
Definition: compat.h:735
long LONG
Definition: pedump.c:60

◆ fw_services_AddRef()

static ULONG WINAPI fw_services_AddRef ( INetFwServices iface)
static

Definition at line 316 of file service.c.

318{
321}
static fw_services * impl_from_INetFwServices(INetFwServices *iface)
Definition: service.c:311
LONG refs
Definition: service.c:308

◆ fw_services_get__NewEnum()

static HRESULT WINAPI fw_services_get__NewEnum ( INetFwServices iface,
IUnknown **  newEnum 
)
static

Definition at line 437 of file service.c.

440{
442
443 FIXME("%p, %p\n", This, newEnum);
444 return E_NOTIMPL;
445}

◆ fw_services_get_Count()

static HRESULT WINAPI fw_services_get_Count ( INetFwServices iface,
LONG count 
)
static

Definition at line 414 of file service.c.

417{
419
420 FIXME("%p, %p\n", This, count);
421
422 *count = 0;
423 return S_OK;
424}
GLuint GLuint GLsizei count
Definition: gl.h:1545

◆ fw_services_GetIDsOfNames()

static HRESULT WINAPI fw_services_GetIDsOfNames ( INetFwServices iface,
REFIID  riid,
LPOLESTR rgszNames,
UINT  cNames,
LCID  lcid,
DISPID rgDispId 
)
static

Definition at line 382 of file service.c.

389{
391
392 FIXME("%p %s %p %u %u %p\n", This, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId);
393 return E_NOTIMPL;
394}

◆ fw_services_GetTypeInfo()

static HRESULT WINAPI fw_services_GetTypeInfo ( INetFwServices iface,
UINT  iTInfo,
LCID  lcid,
ITypeInfo **  ppTInfo 
)
static

Definition at line 370 of file service.c.

375{
377
378 FIXME("%p %u %u %p\n", This, iTInfo, lcid, ppTInfo);
379 return E_NOTIMPL;
380}

◆ fw_services_GetTypeInfoCount()

static HRESULT WINAPI fw_services_GetTypeInfoCount ( INetFwServices iface,
UINT pctinfo 
)
static

Definition at line 360 of file service.c.

363{
365
366 FIXME("%p %p\n", This, pctinfo);
367 return E_NOTIMPL;
368}

◆ fw_services_Invoke()

static HRESULT WINAPI fw_services_Invoke ( INetFwServices iface,
DISPID  dispIdMember,
REFIID  riid,
LCID  lcid,
WORD  wFlags,
DISPPARAMS *  pDispParams,
VARIANT pVarResult,
EXCEPINFO *  pExcepInfo,
UINT puArgErr 
)
static

Definition at line 396 of file service.c.

406{
408
409 FIXME("%p %d %s %d %d %p %p %p %p\n", This, dispIdMember, debugstr_guid(riid),
410 lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
411 return E_NOTIMPL;
412}

◆ fw_services_Item()

static HRESULT WINAPI fw_services_Item ( INetFwServices iface,
NET_FW_SERVICE_TYPE  svcType,
INetFwService **  service 
)
static

Definition at line 426 of file service.c.

430{
432
433 FIXME("%p, %u, %p\n", This, svcType, service);
434 return NetFwService_create( NULL, (void **)service );
435}
static HRESULT NetFwService_create(IUnknown *pUnkOuter, LPVOID *ppObj)
Definition: service.c:287

◆ fw_services_QueryInterface()

static HRESULT WINAPI fw_services_QueryInterface ( INetFwServices iface,
REFIID  riid,
void **  ppvObject 
)
static

Definition at line 336 of file service.c.

340{
342
343 TRACE("%p %s %p\n", This, debugstr_guid( riid ), ppvObject );
344
345 if ( IsEqualGUID( riid, &IID_INetFwServices ) ||
348 {
349 *ppvObject = iface;
350 }
351 else
352 {
353 FIXME("interface %s not implemented\n", debugstr_guid(riid));
354 return E_NOINTERFACE;
355 }
356 INetFwServices_AddRef( iface );
357 return S_OK;
358}

◆ fw_services_Release()

static ULONG WINAPI fw_services_Release ( INetFwServices iface)
static

Definition at line 323 of file service.c.

325{
328 if (!refs)
329 {
330 TRACE("destroying %p\n", fw_services);
332 }
333 return refs;
334}

◆ impl_from_INetFwService()

◆ impl_from_INetFwServices()

◆ NetFwService_create()

static HRESULT NetFwService_create ( IUnknown pUnkOuter,
LPVOID ppObj 
)
static

Definition at line 287 of file service.c.

288{
289 fw_service *fp;
290
291 TRACE("(%p,%p)\n", pUnkOuter, ppObj);
292
293 fp = HeapAlloc( GetProcessHeap(), 0, sizeof(*fp) );
294 if (!fp) return E_OUTOFMEMORY;
295
297 fp->refs = 1;
298
299 *ppObj = &fp->INetFwService_iface;
300
301 TRACE("returning iface %p\n", *ppObj);
302 return S_OK;
303}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define HeapAlloc
Definition: compat.h:733
static const struct INetFwServiceVtbl fw_service_vtbl
Definition: service.c:264
INetFwService INetFwService_iface
Definition: service.c:37

Referenced by fw_services_Item().

◆ NetFwServices_create()

HRESULT NetFwServices_create ( IUnknown pUnkOuter,
LPVOID ppObj 
)

Definition at line 461 of file service.c.

462{
463 fw_services *fp;
464
465 TRACE("(%p,%p)\n", pUnkOuter, ppObj);
466
467 fp = HeapAlloc( GetProcessHeap(), 0, sizeof(*fp) );
468 if (!fp) return E_OUTOFMEMORY;
469
471 fp->refs = 1;
472
473 *ppObj = &fp->INetFwServices_iface;
474
475 TRACE("returning iface %p\n", *ppObj);
476 return S_OK;
477}
static const struct INetFwServicesVtbl fw_services_vtbl
Definition: service.c:447
INetFwServices INetFwServices_iface
Definition: service.c:307

Referenced by fw_profile_get_Services().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( hnetcfg  )

Variable Documentation

◆ fw_service_vtbl

const struct INetFwServiceVtbl fw_service_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI fw_service_put_Scope(INetFwService *iface, NET_FW_SCOPE scope)
Definition: service.c:204
static HRESULT WINAPI fw_service_put_IpVersion(INetFwService *iface, NET_FW_IP_VERSION ipVersion)
Definition: service.c:184
static ULONG WINAPI fw_service_AddRef(INetFwService *iface)
Definition: service.c:46
static HRESULT WINAPI fw_service_get_Scope(INetFwService *iface, NET_FW_SCOPE *scope)
Definition: service.c:194
static HRESULT WINAPI fw_service_get_IpVersion(INetFwService *iface, NET_FW_IP_VERSION *ipVersion)
Definition: service.c:174
static HRESULT WINAPI fw_service_GetIDsOfNames(INetFwService *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
Definition: service.c:112
static HRESULT WINAPI fw_service_put_RemoteAddresses(INetFwService *iface, BSTR remoteAddrs)
Definition: service.c:224
static HRESULT WINAPI fw_service_Invoke(INetFwService *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
Definition: service.c:126
static HRESULT WINAPI fw_service_get_Customized(INetFwService *iface, VARIANT_BOOL *customized)
Definition: service.c:164
static HRESULT WINAPI fw_service_get_GloballyOpenPorts(INetFwService *iface, INetFwOpenPorts **openPorts)
Definition: service.c:254
static HRESULT WINAPI fw_service_GetTypeInfoCount(INetFwService *iface, UINT *pctinfo)
Definition: service.c:90
static HRESULT WINAPI fw_service_GetTypeInfo(INetFwService *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: service.c:100
static HRESULT WINAPI fw_service_get_Type(INetFwService *iface, NET_FW_SERVICE_TYPE *type)
Definition: service.c:154
static HRESULT WINAPI fw_service_get_Name(INetFwService *iface, BSTR *name)
Definition: service.c:144
static HRESULT WINAPI fw_service_get_RemoteAddresses(INetFwService *iface, BSTR *remoteAddrs)
Definition: service.c:214
static HRESULT WINAPI fw_service_put_Enabled(INetFwService *iface, VARIANT_BOOL enabled)
Definition: service.c:244
static HRESULT WINAPI fw_service_QueryInterface(INetFwService *iface, REFIID riid, void **ppvObject)
Definition: service.c:66
static ULONG WINAPI fw_service_Release(INetFwService *iface)
Definition: service.c:53
static HRESULT WINAPI fw_service_get_Enabled(INetFwService *iface, VARIANT_BOOL *enabled)
Definition: service.c:234

Definition at line 264 of file service.c.

Referenced by NetFwService_create().

◆ fw_services_vtbl

const struct INetFwServicesVtbl fw_services_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI fw_services_get__NewEnum(INetFwServices *iface, IUnknown **newEnum)
Definition: service.c:437
static HRESULT WINAPI fw_services_Invoke(INetFwServices *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
Definition: service.c:396
static HRESULT WINAPI fw_services_GetTypeInfo(INetFwServices *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: service.c:370
static HRESULT WINAPI fw_services_QueryInterface(INetFwServices *iface, REFIID riid, void **ppvObject)
Definition: service.c:336
static HRESULT WINAPI fw_services_get_Count(INetFwServices *iface, LONG *count)
Definition: service.c:414
static ULONG WINAPI fw_services_Release(INetFwServices *iface)
Definition: service.c:323
static HRESULT WINAPI fw_services_Item(INetFwServices *iface, NET_FW_SERVICE_TYPE svcType, INetFwService **service)
Definition: service.c:426
static HRESULT WINAPI fw_services_GetIDsOfNames(INetFwServices *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
Definition: service.c:382
static ULONG WINAPI fw_services_AddRef(INetFwServices *iface)
Definition: service.c:316
static HRESULT WINAPI fw_services_GetTypeInfoCount(INetFwServices *iface, UINT *pctinfo)
Definition: service.c:360

Definition at line 447 of file service.c.

Referenced by NetFwServices_create().