Author: janderwald Date: Tue Oct 28 04:06:24 2008 New Revision: 37035
URL: http://svn.reactos.org/svn/reactos?rev=37035&view=rev Log: - Implement applying / canceling changes on close - Temporary disable storing the TcpFilter settings
Modified: trunk/reactos/dll/win32/netcfgx/inetcfgcomp_iface.c trunk/reactos/dll/win32/netcfgx/netcfg_iface.c trunk/reactos/dll/win32/netcfgx/precomp.h trunk/reactos/dll/win32/netcfgx/tcpipconf_notify.c
Modified: trunk/reactos/dll/win32/netcfgx/inetcfgcomp_iface.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/netcfgx/inetcfgco... ============================================================================== --- trunk/reactos/dll/win32/netcfgx/inetcfgcomp_iface.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/netcfgx/inetcfgcomp_iface.c [iso-8859-1] Tue Oct 28 04:06:24 2008 @@ -7,7 +7,6 @@ LONG ref; NetCfgComponentItem * pItem; INetCfgComponentPropertyUi * pProperty; - INetCfgComponentControl * pNCCC; INetCfg * pNCfg; }INetCfgComponentImpl;
@@ -20,8 +19,6 @@ INetCfg * pNCfg; }IEnumNetCfgComponentImpl;
- - HRESULT STDCALL INetCfgComponent_fnQueryInterface( @@ -42,7 +39,6 @@
return E_NOINTERFACE; } -
ULONG STDCALL @@ -420,7 +416,7 @@ return hr; } This->pProperty = pNCCPU; - This->pNCCC = pNCCC; + This->pItem->pNCCC = pNCCC;
return S_OK; } @@ -467,20 +463,14 @@ pinfo.pszCaption = This->pItem->szDisplayName;
iResult = PropertySheetW(&pinfo); - CoTaskMemFree(hppages); - if (iResult < 0) - { - //FIXME - INetCfgComponentControl_CancelChanges(This->pNCCC); - return E_ABORT; - } - else - { - //FIXME - INetCfgComponentControl_ApplyRegistryChanges(This->pNCCC); + if (iResult > 0) + { + /* indicate that settings should be stored */ + This->pItem->bChanged = TRUE; return S_OK; } + return S_FALSE; } static const INetCfgComponentVtbl vt_NetCfgComponent = {
Modified: trunk/reactos/dll/win32/netcfgx/netcfg_iface.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/netcfgx/netcfg_if... ============================================================================== --- trunk/reactos/dll/win32/netcfgx/netcfg_iface.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/netcfgx/netcfg_iface.c [iso-8859-1] Tue Oct 28 04:06:24 2008 @@ -533,6 +533,56 @@ return S_OK; }
+VOID +ApplyOrCancelChanges( + NetCfgComponentItem *pHead, + const CLSID * lpClassGUID, + BOOL bApply) +{ + HKEY hKey; + WCHAR szName[200]; + LPOLESTR pszGuid; + + while(pHead) + { + if (pHead->bChanged) + { + if (IsEqualGUID(lpClassGUID, &GUID_DEVCLASS_NET)) + { + if (bApply) + { + if (StringFromCLSID(&pHead->InstanceId, &pszGuid) == NOERROR) + { + swprintf(szName, L"SYSTEM\CurrentControlSet\Control\Network\%s", pszGuid); + CoTaskMemFree(pszGuid); + + if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, szName, 0, KEY_READ, &hKey) == ERROR_SUCCESS) + { + RegSetValueExW(hKey, NULL, 0, REG_SZ, (LPBYTE)pHead->szDisplayName, (wcslen(pHead->szDisplayName)+1) * sizeof(WCHAR)); + RegCloseKey(hKey); + } + } + } + } + else if (pHead->pNCCC) + { + if (bApply) + { + INetCfgComponentControl_ApplyRegistryChanges(pHead->pNCCC); + //FIXME + // implement INetCfgPnpReconfigCallback and pass it to + //INetCfgComponentControl_ApplyPnpChanges(pHead->pNCCC, NULL); + } + else + { + INetCfgComponentControl_CancelChanges(pHead->pNCCC); + } + } + } + pHead = pHead->pNext; + } +} + HRESULT STDCALL INetCfg_fnUninitialize( @@ -557,8 +607,12 @@ if (!This->bInitialized) return NETCFG_E_NOT_INITIALIZED;
- - return E_NOTIMPL; + ApplyOrCancelChanges(This->pNet, &GUID_DEVCLASS_NET, TRUE); + ApplyOrCancelChanges(This->pClient, &GUID_DEVCLASS_NETCLIENT, TRUE); + ApplyOrCancelChanges(This->pService, &GUID_DEVCLASS_NETSERVICE, TRUE); + ApplyOrCancelChanges(This->pProtocol, &GUID_DEVCLASS_NETTRANS, TRUE); + + return S_OK; }
HRESULT @@ -571,7 +625,11 @@ if (!This->bInitialized) return NETCFG_E_NOT_INITIALIZED;
- return E_NOTIMPL; + ApplyOrCancelChanges(This->pClient, &GUID_DEVCLASS_NETCLIENT, FALSE); + ApplyOrCancelChanges(This->pService, &GUID_DEVCLASS_NETSERVICE, FALSE); + ApplyOrCancelChanges(This->pProtocol, &GUID_DEVCLASS_NETTRANS, FALSE); + + return S_OK; }
HRESULT
Modified: trunk/reactos/dll/win32/netcfgx/precomp.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/netcfgx/precomp.h... ============================================================================== --- trunk/reactos/dll/win32/netcfgx/precomp.h [iso-8859-1] (original) +++ trunk/reactos/dll/win32/netcfgx/precomp.h [iso-8859-1] Tue Oct 28 04:06:24 2008 @@ -34,6 +34,7 @@ ULONG Status; //Y BOOL bChanged; //Y struct tagNetCfgComponentItem * pNext; + INetCfgComponentControl * pNCCC; }NetCfgComponentItem;
/* netcfg_iface.c */
Modified: trunk/reactos/dll/win32/netcfgx/tcpipconf_notify.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/netcfgx/tcpipconf... ============================================================================== --- trunk/reactos/dll/win32/netcfgx/tcpipconf_notify.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/netcfgx/tcpipconf_notify.c [iso-8859-1] Tue Oct 28 04:06:24 2008 @@ -3129,22 +3129,29 @@ RegSetValueExW(hKey, L"Domain", 0, REG_SZ, (LPBYTE)This->pCurrentConfig->pDNS->szDomain, (wcslen(This->pCurrentConfig->pDNS->szDomain)+1) * sizeof(WCHAR)); } - +#if 0 if (This->pCurrentConfig->pFilter) { - RegSetValueExW(hKey, L"TCPAllowedPorts", 0, REG_MULTI_SZ, + if (This->pCurrentConfig->pFilter->szTCPAllowedPorts) + { + RegSetValueExW(hKey, L"TCPAllowedPorts", 0, REG_MULTI_SZ, (LPBYTE)This->pCurrentConfig->pFilter->szTCPAllowedPorts, This->pCurrentConfig->pFilter->TCPSize); - - RegSetValueExW(hKey, L"UDPAllowedPorts", 0, REG_MULTI_SZ, + } + if (This->pCurrentConfig->pFilter->szUDPAllowedPorts) + { + RegSetValueExW(hKey, L"UDPAllowedPorts", 0, REG_MULTI_SZ, (LPBYTE)This->pCurrentConfig->pFilter->szUDPAllowedPorts, This->pCurrentConfig->pFilter->UDPSize); - - RegSetValueExW(hKey, L"RawIPAllowedProtocols", 0, REG_MULTI_SZ, + } + if (This->pCurrentConfig->pFilter->szRawIPAllowedProtocols) + { + RegSetValueExW(hKey, L"RawIPAllowedProtocols", 0, REG_MULTI_SZ, (LPBYTE)This->pCurrentConfig->pFilter->szRawIPAllowedProtocols, This->pCurrentConfig->pFilter->IPSize); - } - + } + } +#endif RegSetValueExW(hKey, L"EnableDHCP", 0, REG_DWORD, (LPBYTE)&This->pCurrentConfig->DhcpEnabled, sizeof(DWORD)); if (This->pCurrentConfig->DhcpEnabled) {