[HNETCFG] Sync with Wine Staging 1.7.55. CORE-10536

svn path=/trunk/; revision=69949
This commit is contained in:
Amine Khaldi 2015-11-20 10:14:10 +00:00
parent 493f7ff217
commit 2552bcb15f
4 changed files with 83 additions and 18 deletions

View file

@ -25,6 +25,7 @@ typedef struct fw_app
{
INetFwAuthorizedApplication INetFwAuthorizedApplication_iface;
LONG refs;
BSTR filename;
} fw_app;
static inline fw_app *impl_from_INetFwAuthorizedApplication( INetFwAuthorizedApplication *iface )
@ -47,6 +48,7 @@ static ULONG WINAPI fw_app_Release(
if (!refs)
{
TRACE("destroying %p\n", fw_app);
if (fw_app->filename) SysFreeString( fw_app->filename );
HeapFree( GetProcessHeap(), 0, fw_app );
}
return refs;
@ -96,6 +98,7 @@ static REFIID tid_id[] =
&IID_INetFwAuthorizedApplications,
&IID_INetFwMgr,
&IID_INetFwOpenPort,
&IID_INetFwOpenPorts,
&IID_INetFwPolicy,
&IID_INetFwProfile
};
@ -237,7 +240,18 @@ static HRESULT WINAPI fw_app_get_ProcessImageFileName(
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(
@ -247,7 +261,15 @@ 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(
@ -370,6 +392,7 @@ HRESULT NetFwAuthorizedApplication_create( IUnknown *pUnkOuter, LPVOID *ppObj )
fa->INetFwAuthorizedApplication_iface.lpVtbl = &fw_app_vtbl;
fa->refs = 1;
fa->filename = NULL;
*ppObj = &fa->INetFwAuthorizedApplication_iface;

View file

@ -43,6 +43,7 @@ enum type_id
INetFwAuthorizedApplications_tid,
INetFwMgr_tid,
INetFwOpenPort_tid,
INetFwOpenPorts_tid,
INetFwPolicy_tid,
INetFwProfile_tid,
last_tid

View file

@ -18,10 +18,15 @@
#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 )
@ -44,6 +49,7 @@ static ULONG WINAPI fw_port_Release(
if (!refs)
{
TRACE("destroying %p\n", fw_port);
SysFreeString( fw_port->name );
HeapFree( GetProcessHeap(), 0, fw_port );
}
return refs;
@ -163,8 +169,14 @@ static HRESULT WINAPI fw_port_put_Name(
{
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(
@ -203,8 +215,13 @@ static HRESULT WINAPI fw_port_put_Protocol(
{
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(
@ -223,8 +240,9 @@ static HRESULT WINAPI fw_port_put_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(
@ -286,7 +304,7 @@ static HRESULT WINAPI fw_port_put_Enabled(
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(
@ -336,6 +354,9 @@ HRESULT NetFwOpenPort_create( IUnknown *pUnkOuter, LPVOID *ppObj )
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;
@ -404,8 +425,9 @@ static HRESULT WINAPI fw_ports_GetTypeInfoCount(
{
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(
@ -416,8 +438,8 @@ 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(
@ -429,9 +451,18 @@ 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(
@ -446,10 +477,20 @@ 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(

View file

@ -72,7 +72,7 @@ reactos/dll/win32/fusion # Synced to WineStaging-1.7.47
reactos/dll/win32/gdiplus # Synced to WineStaging-1.7.47
reactos/dll/win32/hhctrl.ocx # Synced to WineStaging-1.7.47
reactos/dll/win32/hlink # Synced to WineStaging-1.7.47
reactos/dll/win32/hnetcfg # Synced to WineStaging-1.7.47
reactos/dll/win32/hnetcfg # Synced to WineStaging-1.7.55
reactos/dll/win32/httpapi # Synced to WineStaging-1.7.47
reactos/dll/win32/iccvid # Synced to WineStaging-1.7.47
reactos/dll/win32/icmp # Out of sync