From 2552bcb15fbb92d97a539eeb06283525e6174fb1 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Fri, 20 Nov 2015 10:14:10 +0000 Subject: [PATCH] [HNETCFG] Sync with Wine Staging 1.7.55. CORE-10536 svn path=/trunk/; revision=69949 --- reactos/dll/win32/hnetcfg/apps.c | 27 +++++++- reactos/dll/win32/hnetcfg/hnetcfg_private.h | 1 + reactos/dll/win32/hnetcfg/port.c | 71 ++++++++++++++++----- reactos/media/doc/README.WINE | 2 +- 4 files changed, 83 insertions(+), 18 deletions(-) diff --git a/reactos/dll/win32/hnetcfg/apps.c b/reactos/dll/win32/hnetcfg/apps.c index 3721b50878f..33e2c2dfabc 100644 --- a/reactos/dll/win32/hnetcfg/apps.c +++ b/reactos/dll/win32/hnetcfg/apps.c @@ -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; diff --git a/reactos/dll/win32/hnetcfg/hnetcfg_private.h b/reactos/dll/win32/hnetcfg/hnetcfg_private.h index d2f17b16ef1..1f9092a36f2 100644 --- a/reactos/dll/win32/hnetcfg/hnetcfg_private.h +++ b/reactos/dll/win32/hnetcfg/hnetcfg_private.h @@ -43,6 +43,7 @@ enum type_id INetFwAuthorizedApplications_tid, INetFwMgr_tid, INetFwOpenPort_tid, + INetFwOpenPorts_tid, INetFwPolicy_tid, INetFwProfile_tid, last_tid diff --git a/reactos/dll/win32/hnetcfg/port.c b/reactos/dll/win32/hnetcfg/port.c index 186fa0a11ae..7845572dd43 100644 --- a/reactos/dll/win32/hnetcfg/port.c +++ b/reactos/dll/win32/hnetcfg/port.c @@ -18,10 +18,15 @@ #include "hnetcfg_private.h" +#include + 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( diff --git a/reactos/media/doc/README.WINE b/reactos/media/doc/README.WINE index 322c0b6e4ba..39861825973 100644 --- a/reactos/media/doc/README.WINE +++ b/reactos/media/doc/README.WINE @@ -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