[HNETCFG] Sync with Wine Staging 1.7.55. CORE-10536
authorAmine Khaldi <amine.khaldi@reactos.org>
Fri, 20 Nov 2015 10:14:10 +0000 (10:14 +0000)
committerAmine Khaldi <amine.khaldi@reactos.org>
Fri, 20 Nov 2015 10:14:10 +0000 (10:14 +0000)
svn path=/trunk/; revision=69949

reactos/dll/win32/hnetcfg/apps.c
reactos/dll/win32/hnetcfg/hnetcfg_private.h
reactos/dll/win32/hnetcfg/port.c
reactos/media/doc/README.WINE

index 3721b50..33e2c2d 100644 (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;
 
index d2f17b1..1f9092a 100644 (file)
@@ -43,6 +43,7 @@ enum type_id
     INetFwAuthorizedApplications_tid,
     INetFwMgr_tid,
     INetFwOpenPort_tid,
+    INetFwOpenPorts_tid,
     INetFwPolicy_tid,
     INetFwProfile_tid,
     last_tid
index 186fa0a..7845572 100644 (file)
 
 #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(
index 322c0b6..3986182 100644 (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