{
INetFwAuthorizedApplication INetFwAuthorizedApplication_iface;
LONG refs;
+ BSTR filename;
} fw_app;
static inline fw_app *impl_from_INetFwAuthorizedApplication( INetFwAuthorizedApplication *iface )
if (!refs)
{
TRACE("destroying %p\n", fw_app);
+ if (fw_app->filename) SysFreeString( fw_app->filename );
HeapFree( GetProcessHeap(), 0, fw_app );
}
return refs;
&IID_INetFwAuthorizedApplications,
&IID_INetFwMgr,
&IID_INetFwOpenPort,
+ &IID_INetFwOpenPorts,
&IID_INetFwPolicy,
&IID_INetFwProfile
};
fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
FIXME("%p, %p\n", This, imageFileName);
- return E_NOTIMPL;
+
+ if (!imageFileName)
+ return E_INVALIDARG;
+
+ if (!This->filename)
+ {
+ *imageFileName = NULL;
+ return S_OK;
+ }
+
+ *imageFileName = SysAllocString( This->filename );
+ return *imageFileName ? S_OK : E_OUTOFMEMORY;
}
static HRESULT WINAPI fw_app_put_ProcessImageFileName(
fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
FIXME("%p, %s\n", This, debugstr_w(imageFileName));
- return S_OK;
+
+ if (!imageFileName)
+ {
+ This->filename = NULL;
+ return S_OK;
+ }
+
+ This->filename = SysAllocString( imageFileName );
+ return This->filename ? S_OK : E_OUTOFMEMORY;
}
static HRESULT WINAPI fw_app_get_IpVersion(
fa->INetFwAuthorizedApplication_iface.lpVtbl = &fw_app_vtbl;
fa->refs = 1;
+ fa->filename = NULL;
*ppObj = &fa->INetFwAuthorizedApplication_iface;
#include "hnetcfg_private.h"
+#include <ole2.h>
+
typedef struct fw_port
{
INetFwOpenPort INetFwOpenPort_iface;
LONG refs;
+ BSTR name;
+ NET_FW_IP_PROTOCOL protocol;
+ LONG port;
} fw_port;
static inline fw_port *impl_from_INetFwOpenPort( INetFwOpenPort *iface )
if (!refs)
{
TRACE("destroying %p\n", fw_port);
+ SysFreeString( fw_port->name );
HeapFree( GetProcessHeap(), 0, fw_port );
}
return refs;
{
fw_port *This = impl_from_INetFwOpenPort( iface );
- FIXME("%p %s\n", This, debugstr_w(name));
- return E_NOTIMPL;
+ TRACE("%p %s\n", This, debugstr_w(name));
+
+ if (!(name = SysAllocString( name )))
+ return E_OUTOFMEMORY;
+
+ SysFreeString( This->name );
+ This->name = name;
+ return S_OK;
}
static HRESULT WINAPI fw_port_get_IpVersion(
{
fw_port *This = impl_from_INetFwOpenPort( iface );
- FIXME("%p %u\n", This, ipProtocol);
- return E_NOTIMPL;
+ TRACE("%p %u\n", This, ipProtocol);
+
+ if (ipProtocol != NET_FW_IP_PROTOCOL_TCP && ipProtocol != NET_FW_IP_PROTOCOL_UDP)
+ return E_INVALIDARG;
+
+ This->protocol = ipProtocol;
+ return S_OK;
}
static HRESULT WINAPI fw_port_get_Port(
{
fw_port *This = impl_from_INetFwOpenPort( iface );
- FIXME("%p %d\n", This, portNumber);
- return E_NOTIMPL;
+ TRACE("%p %d\n", This, portNumber);
+ This->port = portNumber;
+ return S_OK;
}
static HRESULT WINAPI fw_port_get_Scope(
fw_port *This = impl_from_INetFwOpenPort( iface );
FIXME("%p %d\n", This, enabled);
- return E_NOTIMPL;
+ return S_OK;
}
static HRESULT WINAPI fw_port_get_BuiltIn(
fp->INetFwOpenPort_iface.lpVtbl = &fw_port_vtbl;
fp->refs = 1;
+ fp->name = NULL;
+ fp->protocol = NET_FW_IP_PROTOCOL_TCP;
+ fp->port = 0;
*ppObj = &fp->INetFwOpenPort_iface;
{
fw_ports *This = impl_from_INetFwOpenPorts( iface );
- FIXME("%p %p\n", This, pctinfo);
- return E_NOTIMPL;
+ TRACE("%p %p\n", This, pctinfo);
+ *pctinfo = 1;
+ return S_OK;
}
static HRESULT WINAPI fw_ports_GetTypeInfo(
{
fw_ports *This = impl_from_INetFwOpenPorts( iface );
- FIXME("%p %u %u %p\n", This, iTInfo, lcid, ppTInfo);
- return E_NOTIMPL;
+ TRACE("%p %u %u %p\n", This, iTInfo, lcid, ppTInfo);
+ return get_typeinfo( INetFwOpenPorts_tid, ppTInfo );
}
static HRESULT WINAPI fw_ports_GetIDsOfNames(
DISPID *rgDispId )
{
fw_ports *This = impl_from_INetFwOpenPorts( iface );
+ ITypeInfo *typeinfo;
+ HRESULT hr;
- FIXME("%p %s %p %u %u %p\n", This, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId);
- return E_NOTIMPL;
+ TRACE("%p %s %p %u %u %p\n", This, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId);
+
+ hr = get_typeinfo( INetFwOpenPorts_tid, &typeinfo );
+ if (SUCCEEDED(hr))
+ {
+ hr = ITypeInfo_GetIDsOfNames( typeinfo, rgszNames, cNames, rgDispId );
+ ITypeInfo_Release( typeinfo );
+ }
+ return hr;
}
static HRESULT WINAPI fw_ports_Invoke(
UINT *puArgErr )
{
fw_ports *This = impl_from_INetFwOpenPorts( iface );
+ ITypeInfo *typeinfo;
+ HRESULT hr;
- FIXME("%p %d %s %d %d %p %p %p %p\n", This, dispIdMember, debugstr_guid(riid),
+ TRACE("%p %d %s %d %d %p %p %p %p\n", This, dispIdMember, debugstr_guid(riid),
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
- return E_NOTIMPL;
+
+ hr = get_typeinfo( INetFwOpenPorts_tid, &typeinfo );
+ if (SUCCEEDED(hr))
+ {
+ hr = ITypeInfo_Invoke( typeinfo, &This->INetFwOpenPorts_iface, dispIdMember,
+ wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr );
+ ITypeInfo_Release( typeinfo );
+ }
+ return hr;
}
static HRESULT WINAPI fw_ports_get_Count(