mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 22:32:58 +00:00
- Implement applying / canceling changes on close
- Temporary disable storing the TcpFilter settings svn path=/trunk/; revision=37035
This commit is contained in:
parent
31e02ce543
commit
dfbb281b3a
4 changed files with 80 additions and 24 deletions
|
@ -7,7 +7,6 @@ typedef struct
|
||||||
LONG ref;
|
LONG ref;
|
||||||
NetCfgComponentItem * pItem;
|
NetCfgComponentItem * pItem;
|
||||||
INetCfgComponentPropertyUi * pProperty;
|
INetCfgComponentPropertyUi * pProperty;
|
||||||
INetCfgComponentControl * pNCCC;
|
|
||||||
INetCfg * pNCfg;
|
INetCfg * pNCfg;
|
||||||
}INetCfgComponentImpl;
|
}INetCfgComponentImpl;
|
||||||
|
|
||||||
|
@ -20,8 +19,6 @@ typedef struct
|
||||||
INetCfg * pNCfg;
|
INetCfg * pNCfg;
|
||||||
}IEnumNetCfgComponentImpl;
|
}IEnumNetCfgComponentImpl;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
HRESULT
|
HRESULT
|
||||||
STDCALL
|
STDCALL
|
||||||
INetCfgComponent_fnQueryInterface(
|
INetCfgComponent_fnQueryInterface(
|
||||||
|
@ -43,7 +40,6 @@ INetCfgComponent_fnQueryInterface(
|
||||||
return E_NOINTERFACE;
|
return E_NOINTERFACE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
STDCALL
|
STDCALL
|
||||||
INetCfgComponent_fnAddRef(
|
INetCfgComponent_fnAddRef(
|
||||||
|
@ -420,7 +416,7 @@ CreateNotificationObject(
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
This->pProperty = pNCCPU;
|
This->pProperty = pNCCPU;
|
||||||
This->pNCCC = pNCCC;
|
This->pItem->pNCCC = pNCCC;
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
@ -467,20 +463,14 @@ INetCfgComponent_fnRaisePropertyUi(
|
||||||
pinfo.pszCaption = This->pItem->szDisplayName;
|
pinfo.pszCaption = This->pItem->szDisplayName;
|
||||||
|
|
||||||
iResult = PropertySheetW(&pinfo);
|
iResult = PropertySheetW(&pinfo);
|
||||||
|
|
||||||
CoTaskMemFree(hppages);
|
CoTaskMemFree(hppages);
|
||||||
if (iResult < 0)
|
if (iResult > 0)
|
||||||
{
|
{
|
||||||
//FIXME
|
/* indicate that settings should be stored */
|
||||||
INetCfgComponentControl_CancelChanges(This->pNCCC);
|
This->pItem->bChanged = TRUE;
|
||||||
return E_ABORT;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//FIXME
|
|
||||||
INetCfgComponentControl_ApplyRegistryChanges(This->pNCCC);
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
return S_FALSE;
|
||||||
}
|
}
|
||||||
static const INetCfgComponentVtbl vt_NetCfgComponent =
|
static const INetCfgComponentVtbl vt_NetCfgComponent =
|
||||||
{
|
{
|
||||||
|
|
|
@ -533,6 +533,56 @@ INetCfg_fnInitialize(
|
||||||
return S_OK;
|
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
|
HRESULT
|
||||||
STDCALL
|
STDCALL
|
||||||
INetCfg_fnUninitialize(
|
INetCfg_fnUninitialize(
|
||||||
|
@ -557,8 +607,12 @@ INetCfg_fnApply(
|
||||||
if (!This->bInitialized)
|
if (!This->bInitialized)
|
||||||
return NETCFG_E_NOT_INITIALIZED;
|
return NETCFG_E_NOT_INITIALIZED;
|
||||||
|
|
||||||
|
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 E_NOTIMPL;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT
|
HRESULT
|
||||||
|
@ -571,7 +625,11 @@ INetCfg_fnCancel(
|
||||||
if (!This->bInitialized)
|
if (!This->bInitialized)
|
||||||
return NETCFG_E_NOT_INITIALIZED;
|
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
|
HRESULT
|
||||||
|
|
|
@ -34,6 +34,7 @@ typedef struct tagNetCfgComponentItem
|
||||||
ULONG Status; //Y
|
ULONG Status; //Y
|
||||||
BOOL bChanged; //Y
|
BOOL bChanged; //Y
|
||||||
struct tagNetCfgComponentItem * pNext;
|
struct tagNetCfgComponentItem * pNext;
|
||||||
|
INetCfgComponentControl * pNCCC;
|
||||||
}NetCfgComponentItem;
|
}NetCfgComponentItem;
|
||||||
|
|
||||||
/* netcfg_iface.c */
|
/* netcfg_iface.c */
|
||||||
|
|
|
@ -3129,22 +3129,29 @@ INetCfgComponentControl_fnApplyRegistryChanges(
|
||||||
RegSetValueExW(hKey, L"Domain", 0, REG_SZ, (LPBYTE)This->pCurrentConfig->pDNS->szDomain,
|
RegSetValueExW(hKey, L"Domain", 0, REG_SZ, (LPBYTE)This->pCurrentConfig->pDNS->szDomain,
|
||||||
(wcslen(This->pCurrentConfig->pDNS->szDomain)+1) * sizeof(WCHAR));
|
(wcslen(This->pCurrentConfig->pDNS->szDomain)+1) * sizeof(WCHAR));
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
if (This->pCurrentConfig->pFilter)
|
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,
|
(LPBYTE)This->pCurrentConfig->pFilter->szTCPAllowedPorts,
|
||||||
This->pCurrentConfig->pFilter->TCPSize);
|
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,
|
(LPBYTE)This->pCurrentConfig->pFilter->szUDPAllowedPorts,
|
||||||
This->pCurrentConfig->pFilter->UDPSize);
|
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,
|
(LPBYTE)This->pCurrentConfig->pFilter->szRawIPAllowedProtocols,
|
||||||
This->pCurrentConfig->pFilter->IPSize);
|
This->pCurrentConfig->pFilter->IPSize);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
RegSetValueExW(hKey, L"EnableDHCP", 0, REG_DWORD, (LPBYTE)&This->pCurrentConfig->DhcpEnabled, sizeof(DWORD));
|
RegSetValueExW(hKey, L"EnableDHCP", 0, REG_DWORD, (LPBYTE)&This->pCurrentConfig->DhcpEnabled, sizeof(DWORD));
|
||||||
if (This->pCurrentConfig->DhcpEnabled)
|
if (This->pCurrentConfig->DhcpEnabled)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue