ReactOS 0.4.15-dev-6703-g6528ab8
tcpipconf_notify.c File Reference
#include "precomp.h"
#include <winnls.h>
#include <winsock.h>
#include <iphlpapi.h>
#include <dhcpcsdk.h>
#include <dhcpcapi.h>
Include dependency graph for tcpipconf_notify.c:

Go to the source code of this file.

Classes

struct  TcpFilterSettings
 
struct  TcpipAdvancedDNSDlgSettings
 
struct  tagIP_ADDR
 
struct  TcpipSettings
 
struct  TcpipConfNotifyImpl
 
struct  TcpipGwSettings
 
struct  TcpipIpSettings
 
struct  TcpipDnsSettings
 
struct  TcpipSuffixSettings
 
struct  TcpipPortSettings
 

Typedefs

typedef struct tagIP_ADDR IP_ADDR
 
typedef struct TcpipConfNotifyImplLPTcpipConfNotifyImpl
 

Enumerations

enum  COPY_TYPE { METRIC = 1 , SUBMASK = 2 , IPADDR = 3 }
 

Functions

static __inline LPTcpipConfNotifyImpl impl_from_INetCfgComponentControl (INetCfgComponentControl *iface)
 
INT GetSelectedItem (HWND hDlgCtrl)
 
HRESULT InitializeTcpipBasicDlgCtrls (HWND hwndDlg, TcpipSettings *pCurSettings)
 
VOID InsertColumnToListView (HWND hDlgCtrl, UINT ResId, UINT SubItem, UINT Size)
 
INT_PTR StoreTcpipBasicSettings (HWND hwndDlg, TcpipConfNotifyImpl *This, BOOL bApply)
 
HRESULT Initialize (TcpipConfNotifyImpl *This)
 
UINT GetIpAddressFromStringW (WCHAR *szBuffer)
 
VOID DisplayError (UINT ResTxt, UINT ResTitle, UINT Type)
 
INT_PTR CALLBACK TcpipFilterPortDlg (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
VOID InitFilterListBox (LPWSTR pData, HWND hwndDlg, HWND hDlgCtrl, UINT AllowButton, UINT RestrictButton, UINT AddButton, UINT DelButton)
 
LPWSTR CreateFilterList (HWND hDlgCtrl, LPDWORD Size)
 
TcpFilterSettingsStoreTcpipFilterSettings (HWND hwndDlg)
 
static VOID AddItem (HWND hwndDlg, HWND hDlgCtrl, UINT MaxItem, UINT ResId)
 
static VOID DelItem (HWND hDlgCtrl)
 
INT_PTR CALLBACK TcpipFilterSettingsDlg (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
HPROPSHEETPAGE InitializePropertySheetPage (LPWSTR resname, DLGPROC dlgproc, LPARAM lParam, LPWSTR szTitle)
 
VOID InitializeTcpipAdvancedOptDlg (HWND hwndDlg, TcpipConfNotifyImpl *This)
 
INT_PTR CALLBACK TcpipAdvancedOptDlg (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
VOID InsertIpAddressToListView (HWND hDlgCtrl, IP_ADDR *pAddr, BOOL bSubMask)
 
VOID InitializeTcpipAdvancedIpDlg (HWND hwndDlg, TcpipConfNotifyImpl *This)
 
INT_PTR CALLBACK TcpipAdvGwDlg (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
BOOL GetGWListEntry (HWND hDlgCtrl, INT Index, TcpipGwSettings *pGwSettings)
 
INT_PTR CALLBACK TcpipAddIpDlg (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
BOOL VerifyDNSSuffix (LPWSTR szName)
 
INT_PTR CALLBACK TcpipAddSuffixDlg (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
BOOL GetIPListEntry (HWND hDlgCtrl, INT Index, TcpipIpSettings *pIpSettings)
 
VOID DeleteItemFromList (HWND hDlgCtrl)
 
UINT GetIpAddressFromStringA (char *sBuffer)
 
VOID FreeIPAddr (IP_ADDR *pAddr)
 
BOOL GetListViewItem (HWND hDlgCtrl, UINT Index, UINT SubIndex, WCHAR *szBuffer, UINT BufferSize)
 
VOID StoreIPSettings (HWND hDlgCtrl, TcpipConfNotifyImpl *This, BOOL bSubmask)
 
INT_PTR CALLBACK TcpipAdvancedIpDlg (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
INT_PTR CALLBACK TcpipAddDNSDlg (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
VOID InitializeTcpipAdvancedDNSDlg (HWND hwndDlg, TcpipConfNotifyImpl *This)
 
VOID ToggleUpDown (HWND hwndDlg, HWND hDlgCtrl, UINT UpButton, UINT DownButton, UINT ModButton, UINT DelButton)
 
VOID MoveItem (HWND hDlgCtrl, INT pos)
 
VOID RemoveItem (HWND hDlgCtrl)
 
LPWSTR GetListViewEntries (HWND hDlgCtrl)
 
VOID StoreDNSSettings (HWND hDlgCtrl, TcpipConfNotifyImpl *This)
 
INT_PTR CALLBACK TcpipAdvancedDnsDlg (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static int CALLBACK PropSheetProc (HWND hwndDlg, UINT uMsg, LPARAM lParam)
 
VOID LaunchAdvancedTcpipSettings (HWND hwndDlg, TcpipConfNotifyImpl *This)
 
INT_PTR CALLBACK TcpipAltConfDlg (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
VOID AddAlternativeDialog (HWND hDlg, TcpipConfNotifyImpl *This)
 
HRESULT CopyIpAddrString (IP_ADDR_STRING *pSrc, IP_ADDR **pTarget, COPY_TYPE Type, LPWSTR szMetric)
 
INT_PTR CALLBACK TcpipBasicDlg (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
HRESULT WINAPI INetCfgComponentPropertyUi_fnQueryInterface (INetCfgComponentPropertyUi *iface, REFIID iid, LPVOID *ppvObj)
 
ULONG WINAPI INetCfgComponentPropertyUi_fnAddRef (INetCfgComponentPropertyUi *iface)
 
ULONG WINAPI INetCfgComponentPropertyUi_fnRelease (INetCfgComponentPropertyUi *iface)
 
HRESULT WINAPI INetCfgComponentPropertyUi_fnQueryPropertyUi (INetCfgComponentPropertyUi *iface, IUnknown *pUnkReserved)
 
HRESULT WINAPI INetCfgComponentPropertyUi_fnSetContext (INetCfgComponentPropertyUi *iface, IUnknown *pUnkReserved)
 
HRESULT LoadDNSSettings (TcpipConfNotifyImpl *This)
 
LPWSTR LoadTcpFilterSettingsFromRegistry (HKEY hKey, LPCWSTR szName, LPDWORD Size)
 
HRESULT LoadFilterSettings (TcpipConfNotifyImpl *This)
 
HRESULT WINAPI INetCfgComponentPropertyUi_fnMergePropPages (INetCfgComponentPropertyUi *iface, DWORD *pdwDefPages, BYTE **pahpspPrivate, UINT *pcPages, HWND hwndParent, LPCWSTR *pszStartPage)
 
HRESULT WINAPI INetCfgComponentPropertyUi_fnValidateProperties (INetCfgComponentPropertyUi *iface, HWND hwndDlg)
 
HRESULT WINAPI INetCfgComponentPropertyUi_fnApplyProperties (INetCfgComponentPropertyUi *iface)
 
HRESULT WINAPI INetCfgComponentPropertyUi_fnCancelProperties (INetCfgComponentPropertyUi *iface)
 
HRESULT WINAPI INetCfgComponentControl_fnQueryInterface (INetCfgComponentControl *iface, REFIID iid, LPVOID *ppvObj)
 
ULONG WINAPI INetCfgComponentControl_fnAddRef (INetCfgComponentControl *iface)
 
ULONG WINAPI INetCfgComponentControl_fnRelease (INetCfgComponentControl *iface)
 
HRESULT WINAPI INetCfgComponentControl_fnInitialize (INetCfgComponentControl *iface, INetCfgComponent *pIComp, INetCfg *pINetCfg, BOOL fInstalling)
 
static LPWSTR CreateMultiSzString (IP_ADDR *pAddr, COPY_TYPE Type, LPDWORD Size, BOOL bComma)
 
HRESULT WINAPI INetCfgComponentControl_fnApplyRegistryChanges (INetCfgComponentControl *iface)
 
HRESULT WINAPI INetCfgComponentControl_fnApplyPnpChanges (INetCfgComponentControl *iface, INetCfgPnpReconfigCallback *pICallback)
 
HRESULT WINAPI INetCfgComponentControl_fnCancelChanges (INetCfgComponentControl *iface)
 
HRESULT WINAPI TcpipConfigNotify_Constructor (IUnknown *pUnkOuter, REFIID riid, LPVOID *ppv)
 

Variables

static const INetCfgComponentPropertyUiVtbl vt_NetCfgComponentPropertyUi
 
static const INetCfgComponentControlVtbl vt_NetCfgComponentControl
 

Typedef Documentation

◆ IP_ADDR

◆ LPTcpipConfNotifyImpl

Enumeration Type Documentation

◆ COPY_TYPE

Enumerator
METRIC 
SUBMASK 
IPADDR 

Definition at line 47 of file tcpipconf_notify.c.

48{
49 METRIC = 1,
50 SUBMASK = 2,
51 IPADDR = 3
ULONG IPADDR
Definition: rassapi.h:53
COPY_TYPE
@ METRIC
@ SUBMASK

Function Documentation

◆ AddAlternativeDialog()

VOID AddAlternativeDialog ( HWND  hDlg,
TcpipConfNotifyImpl This 
)

Definition at line 2156 of file tcpipconf_notify.c.

2159{
2160 HPROPSHEETPAGE hpage;
2161
2163 if (!hpage)
2164 return;
2165
2166 SendMessageW(hDlg, PSM_INSERTPAGE, 1, (LPARAM)hpage);
2167}
#define NULL
Definition: types.h:112
#define IDD_TCPIP_ALTCF_DLG
Definition: resource.h:9
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
HPROPSHEETPAGE InitializePropertySheetPage(LPWSTR resname, DLGPROC dlgproc, LPARAM lParam, LPWSTR szTitle)
INT_PTR CALLBACK TcpipAltConfDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
LONG_PTR LPARAM
Definition: windef.h:208
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

Referenced by TcpipBasicDlg().

◆ AddItem()

static VOID AddItem ( HWND  hwndDlg,
HWND  hDlgCtrl,
UINT  MaxItem,
UINT  ResId 
)
static

Definition at line 338 of file tcpipconf_notify.c.

343{
345
346 Port.MaxNum = MaxItem;
347 Port.hDlgCtrl = hDlgCtrl;
348 Port.ResId = ResId;
349
351}
HINSTANCE netcfgx_hInstance
Definition: netcfgx.c:15
#define IDD_TCPIP_PORT_DLG
Definition: resource.h:18
CPPORT Port[4]
Definition: headless.c:35
INT_PTR CALLBACK TcpipFilterPortDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)

◆ CopyIpAddrString()

HRESULT CopyIpAddrString ( IP_ADDR_STRING pSrc,
IP_ADDR **  pTarget,
COPY_TYPE  Type,
LPWSTR  szMetric 
)

Definition at line 2416 of file tcpipconf_notify.c.

2421{
2422 IP_ADDR_STRING * pCurrent;
2423 IP_ADDR *pNew, *pLast;
2424
2425 pCurrent = pSrc;
2426 pLast = NULL;
2427
2428 while(pCurrent)
2429 {
2430 pNew = CoTaskMemAlloc(sizeof(IP_ADDR));
2431 if (!pNew)
2432 {
2433 break;
2434 }
2435 ZeroMemory(pNew, sizeof(IP_ADDR));
2437 if (!pNew->IpAddress)
2438 {
2439 CoTaskMemFree(pNew);
2440 return E_FAIL;
2441 }
2442
2443 if (Type == SUBMASK)
2444 {
2446 pNew->NTEContext = pCurrent->Context;
2447 }
2448 else if (Type == METRIC)
2449 {
2450 if (szMetric && szMetric[0] != L'\0')
2451 {
2452 pNew->u.Metric = _wtoi(szMetric);
2453 szMetric += wcslen(szMetric) + 1;
2454 }
2455 }
2456
2457 if (!pLast)
2458 *pTarget = pNew;
2459 else
2460 pLast->Next = pNew;
2461
2462 pLast = pNew;
2463 pCurrent = pCurrent->Next;
2464
2465 }
2466 pLast->Next = NULL;
2467 return S_OK;
2468}
Type
Definition: Type.h:7
#define E_FAIL
Definition: ddrawi.h:102
FxIoTarget * pTarget
Definition: fxdeviceapi.cpp:97
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:442
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:426
_Check_return_ _CRTIMP int __cdecl _wtoi(_In_z_ const wchar_t *_Str)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define S_OK
Definition: intsafe.h:52
#define L(x)
Definition: ntvdm.h:50
char String[4 *4]
Definition: iptypes.h:42
struct _IP_ADDR_STRING * Next
Definition: iptypes.h:46
IP_ADDRESS_STRING IpAddress
Definition: iptypes.h:47
IP_MASK_STRING IpMask
Definition: iptypes.h:48
DWORD Context
Definition: iptypes.h:49
struct tagIP_ADDR * Next
union tagIP_ADDR::@512 u
UINT GetIpAddressFromStringA(char *sBuffer)
#define ZeroMemory
Definition: winbase.h:1700

Referenced by Initialize().

◆ CreateFilterList()

LPWSTR CreateFilterList ( HWND  hDlgCtrl,
LPDWORD  Size 
)

Definition at line 266 of file tcpipconf_notify.c.

269{
270 INT iCount, iIndex;
271 LVITEMW li;
274 WCHAR szBuffer[10];
275
276 iCount = ListView_GetItemCount(hDlgCtrl);
277 if (!iCount)
278 {
279 pData = (LPWSTR)CoTaskMemAlloc(3 * sizeof(WCHAR));
280 if (!pData)
281 return NULL;
282 pData[0] = L'0';
283 pData[1] = L'\0';
284 pData[2] = L'\0';
285 *Size = 3 * sizeof(WCHAR);
286 return pData;
287 }
288
289 pData = CoTaskMemAlloc((6 * iCount + 1) * sizeof(WCHAR));
290 if (!pData)
291 return NULL;
292
293 pCur = pData;
294 dwSize = 0;
295 for(iIndex = 0; iIndex < iCount; iIndex++)
296 {
297 ZeroMemory(&li, sizeof(LVITEMW));
298 li.mask = LVIF_TEXT;
299 li.iItem = iIndex;
300 li.pszText = szBuffer;
301 li.cchTextMax = sizeof(szBuffer) /sizeof(WCHAR);
302 if (SendMessageW(hDlgCtrl, LVM_GETITEMW, 0, (LPARAM)&li))
303 {
304 wcscpy(pCur, szBuffer);
305 dwSize += wcslen(szBuffer) + 1;
306 pCur += wcslen(szBuffer) + 1;
307 }
308 }
309 pCur[0] = L'\0';
310 *Size = (dwSize+1) * sizeof(WCHAR);
311 return pData;
312}
unsigned long DWORD
Definition: ntddk_ex.h:95
SINGLE_LIST_ENTRY * pCur
LARGE_INTEGER li
Definition: fxtimerapi.cpp:235
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
#define ListView_GetItemCount(hwnd)
Definition: commctrl.h:2307
#define LVIF_TEXT
Definition: commctrl.h:2309
#define LVM_GETITEMW
Definition: commctrl.h:2390
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1830
int32_t INT
Definition: typedefs.h:58
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4533
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184

Referenced by StoreTcpipFilterSettings().

◆ CreateMultiSzString()

static LPWSTR CreateMultiSzString ( IP_ADDR pAddr,
COPY_TYPE  Type,
LPDWORD  Size,
BOOL  bComma 
)
static

Definition at line 3095 of file tcpipconf_notify.c.

3096{
3097 LPWSTR pStr, pRet;
3098 DWORD dwSize, dwIpAddr;
3099 WCHAR szBuffer[30];
3100 IP_ADDR *pTemp = pAddr;
3101
3102
3103 dwSize = 0;
3104 while(pTemp)
3105 {
3106 if (Type == IPADDR)
3107 {
3108 dwIpAddr = pTemp->IpAddress;
3109 swprintf(szBuffer, L"%lu.%lu.%lu.%lu",
3110 FIRST_IPADDRESS(dwIpAddr), SECOND_IPADDRESS(dwIpAddr), THIRD_IPADDRESS(dwIpAddr), FOURTH_IPADDRESS(dwIpAddr));
3111 }else if (Type == SUBMASK)
3112 {
3113 dwIpAddr = pTemp->u.Subnetmask;
3114 swprintf(szBuffer, L"%lu.%lu.%lu.%lu",
3115 FIRST_IPADDRESS(dwIpAddr), SECOND_IPADDRESS(dwIpAddr), THIRD_IPADDRESS(dwIpAddr), FOURTH_IPADDRESS(dwIpAddr));
3116 }
3117 else if (Type == METRIC)
3118 {
3119 swprintf(szBuffer, L"%u", pTemp->u.Metric);
3120 }
3121
3122 dwSize += wcslen(szBuffer) + 1;
3123 pTemp = pTemp->Next;
3124 }
3125
3126 if (!dwSize)
3127 return NULL;
3128
3129 pStr = pRet = CoTaskMemAlloc((dwSize+1) * sizeof(WCHAR));
3130 if(!pStr)
3131 return NULL;
3132
3133 pTemp = pAddr;
3134 while(pTemp)
3135 {
3136 if (Type == IPADDR)
3137 {
3138 dwIpAddr = pTemp->IpAddress;
3139 swprintf(pStr, L"%lu.%lu.%lu.%lu",
3140 FIRST_IPADDRESS(dwIpAddr), SECOND_IPADDRESS(dwIpAddr), THIRD_IPADDRESS(dwIpAddr), FOURTH_IPADDRESS(dwIpAddr));
3141 }else if (Type == SUBMASK)
3142 {
3143 dwIpAddr = pTemp->u.Subnetmask;
3144 swprintf(pStr, L"%lu.%lu.%lu.%lu",
3145 FIRST_IPADDRESS(dwIpAddr), SECOND_IPADDRESS(dwIpAddr), THIRD_IPADDRESS(dwIpAddr), FOURTH_IPADDRESS(dwIpAddr));
3146 }
3147 else if (Type == METRIC)
3148 {
3149 swprintf(pStr, L"%u", pTemp->u.Metric);
3150 }
3151
3152 if (bComma)
3153 {
3154 pStr += wcslen(pStr);
3155 if (pTemp->Next)
3156 {
3157 pStr[0] = L',';
3158 pStr++;
3159 }
3160 }
3161 else
3162 {
3163 pStr += wcslen(pStr) + 1;
3164 }
3165 pTemp = pTemp->Next;
3166 }
3167 pStr[0] = L'\0';
3168 *Size = (dwSize+1) * sizeof(WCHAR);
3169 return pRet;
3170}
#define swprintf
Definition: precomp.h:40
PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER pAddr
#define FOURTH_IPADDRESS(x)
Definition: commctrl.h:4491
#define FIRST_IPADDRESS(x)
Definition: commctrl.h:4488
#define SECOND_IPADDRESS(x)
Definition: commctrl.h:4489
#define THIRD_IPADDRESS(x)
Definition: commctrl.h:4490

Referenced by INetCfgComponentControl_fnApplyRegistryChanges().

◆ DeleteItemFromList()

VOID DeleteItemFromList ( HWND  hDlgCtrl)

Definition at line 1116 of file tcpipconf_notify.c.

1117{
1118 LVITEMW li;
1119
1120 memset(&li, 0x0, sizeof(LVITEMW));
1121 li.iItem = GetSelectedItem(hDlgCtrl);
1122 if (li.iItem < 0)
1123 {
1125 SetFocus(hDlgCtrl);
1126 }
1127 else
1128 {
1129 (void)ListView_DeleteItem(hDlgCtrl, li.iItem);
1130 }
1131}
#define IDS_NOITEMSEL
Definition: resource.h:109
#define IDS_TCPIP
Definition: resource.h:110
#define ListView_DeleteItem(hwnd, i)
Definition: commctrl.h:2411
#define memset(x, y, z)
Definition: compat.h:39
VOID DisplayError(UINT ResTxt, UINT ResTitle, UINT Type)
INT GetSelectedItem(HWND hDlgCtrl)
HWND WINAPI SetFocus(_In_opt_ HWND)
#define MB_ICONINFORMATION
Definition: winuser.h:796

Referenced by TcpipAdvancedIpDlg().

◆ DelItem()

static VOID DelItem ( HWND  hDlgCtrl)
static

Definition at line 355 of file tcpipconf_notify.c.

357{
358 INT iIndex = GetSelectedItem(hDlgCtrl);
359
360 if (iIndex != -1)
361 {
362 (void)ListView_DeleteItem(hDlgCtrl, iIndex);
363 return;
364 }
366}
#define MB_ICONWARNING
Definition: winuser.h:780

Referenced by TcpipFilterSettingsDlg().

◆ DisplayError()

VOID DisplayError ( UINT  ResTxt,
UINT  ResTitle,
UINT  Type 
)

Definition at line 129 of file tcpipconf_notify.c.

130{
131 WCHAR szBuffer[300];
132 WCHAR szTitle[100];
133
134 if (LoadStringW(netcfgx_hInstance, ResTxt, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
135 szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
136 else
137 szBuffer[0] = L'\0';
138
139 if (LoadStringW(netcfgx_hInstance, ResTitle, szTitle, sizeof(szTitle)/sizeof(WCHAR)))
140 szTitle[(sizeof(szTitle)/sizeof(WCHAR))-1] = L'\0';
141 else
142 szTitle[0] = L'\0';
143
144 MessageBoxW(NULL, szBuffer, szTitle, Type);
145}
TCHAR szTitle[MAX_LOADSTRING]
Definition: magnifier.c:35
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)

Referenced by DeleteItemFromList(), DelItem(), StoreTcpipBasicSettings(), TcpipAddDNSDlg(), TcpipAddIpDlg(), TcpipAddSuffixDlg(), TcpipAdvancedDnsDlg(), TcpipAdvancedIpDlg(), TcpipAdvGwDlg(), TcpipFilterPortDlg(), and TcpipFilterSettingsDlg().

◆ FreeIPAddr()

VOID FreeIPAddr ( IP_ADDR pAddr)

Definition at line 1174 of file tcpipconf_notify.c.

1175{
1176 IP_ADDR *pNext;
1177
1178 if (!pAddr)
1179 return;
1180
1181 while(pAddr)
1182 {
1183 pNext = pAddr->Next;
1185 pAddr = pNext;
1186 }
1187}

Referenced by StoreDNSSettings(), and TcpipAdvancedIpDlg().

◆ GetGWListEntry()

BOOL GetGWListEntry ( HWND  hDlgCtrl,
INT  Index,
TcpipGwSettings pGwSettings 
)

Definition at line 842 of file tcpipconf_notify.c.

843{
844 LVITEMW li;
845 WCHAR szBuffer[30];
846 BOOL bRet;
847
848 ZeroMemory(&li, sizeof(LVITEMW));
849 li.mask = LVIF_TEXT;
850 li.cchTextMax = 16;
851 li.pszText = pGwSettings->szIP;
852 li.iItem = Index;
853
854 if (!SendMessageW(hDlgCtrl, LVM_GETITEMW, 0, (LPARAM)&li))
855 return FALSE;
856 li.pszText = szBuffer;
857 li.cchTextMax = 30;
858 li.iSubItem = 1;
859
860 bRet = SendMessageW(hDlgCtrl, LVM_GETITEMW, 0, (LPARAM)&li);
861 if (bRet)
862 {
863 pGwSettings->Metric = _wtoi(szBuffer);
864 }
865
866 return bRet;
867}
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
_In_ WDFCOLLECTION _In_ ULONG Index

Referenced by TcpipAdvancedIpDlg().

◆ GetIpAddressFromStringA()

UINT GetIpAddressFromStringA ( char sBuffer)

Definition at line 1159 of file tcpipconf_notify.c.

1161{
1162 WCHAR szIp[16];
1163
1164 if (MultiByteToWideChar(CP_ACP, 0, sBuffer, -1, szIp, 16))
1165 {
1166 szIp[15] = L'\0';
1167 return GetIpAddressFromStringW(szIp);
1168 }
1169 return (UINT)-1;
1170}
#define CP_ACP
Definition: compat.h:109
#define MultiByteToWideChar
Definition: compat.h:110
unsigned int UINT
Definition: ndis.h:50
UINT GetIpAddressFromStringW(WCHAR *szBuffer)

Referenced by CopyIpAddrString().

◆ GetIpAddressFromStringW()

UINT GetIpAddressFromStringW ( WCHAR szBuffer)

Definition at line 1134 of file tcpipconf_notify.c.

1136{
1137 DWORD dwIpAddr = 0;
1138 INT Val;
1139 UINT Index = 3;
1140 LPWSTR pLast = szBuffer;
1141 LPWSTR pNext = szBuffer;
1142
1143
1144 while((pNext = wcschr(pNext, L'.')))
1145 {
1146 pNext[0] = L'\0';
1147 Val = _wtoi(pLast);
1148 dwIpAddr |= (Val << Index * 8);
1149 Index--;
1150 pNext++;
1151 pLast = pNext;
1152 }
1153 dwIpAddr |= _wtoi(pLast);
1154
1155 return dwIpAddr;
1156}
#define wcschr
Definition: compat.h:17

Referenced by GetIpAddressFromStringA(), StoreDNSSettings(), StoreIPSettings(), TcpipAddIpDlg(), and TcpipAdvGwDlg().

◆ GetIPListEntry()

BOOL GetIPListEntry ( HWND  hDlgCtrl,
INT  Index,
TcpipIpSettings pIpSettings 
)

Definition at line 1092 of file tcpipconf_notify.c.

1093{
1094 LVITEMW li;
1095
1096 ZeroMemory(&li, sizeof(LVITEMW));
1097 li.mask = LVIF_TEXT;
1098 li.cchTextMax = 16;
1099 li.pszText = pIpSettings->szIP;
1100 li.iItem = Index;
1101
1102 if (!SendMessageW(hDlgCtrl, LVM_GETITEMW, 0, (LPARAM)&li))
1103 return FALSE;
1104
1105 ZeroMemory(&li, sizeof(LVITEMW));
1106 li.mask = LVIF_TEXT;
1107 li.cchTextMax = 16;
1108 li.pszText = pIpSettings->szMask;
1109 li.iSubItem = 1;
1110 li.iItem = Index;
1111
1112 return SendMessageW(hDlgCtrl, LVM_GETITEMW, 0, (LPARAM)&li);
1113}

Referenced by TcpipAdvancedIpDlg().

◆ GetListViewEntries()

LPWSTR GetListViewEntries ( HWND  hDlgCtrl)

Definition at line 1714 of file tcpipconf_notify.c.

1716{
1717 DWORD dwSize;
1718 INT iCount, iIndex;
1719 INT_PTR lResult;
1720 LPWSTR pszSearchList, pItem;
1721
1722 iCount = SendMessageW(hDlgCtrl, LB_GETCOUNT, 0, 0);
1723 if (!iCount || iCount == LB_ERR)
1724 return NULL; //BUGBUG
1725
1726 dwSize = 0;
1727
1728 for (iIndex = 0; iIndex < iCount; iIndex++)
1729 {
1730 lResult = SendMessageW(hDlgCtrl, LB_GETTEXTLEN, iIndex, 0);
1731 if (lResult == LB_ERR)
1732 return NULL;
1733
1734 dwSize += lResult + 1;
1735 }
1736
1737 pszSearchList = (LPWSTR)CoTaskMemAlloc((dwSize + 1) * sizeof(WCHAR));
1738 if (!pszSearchList)
1739 return NULL;
1740
1741 pItem = pszSearchList;
1742 for (iIndex = 0; iIndex < iCount; iIndex++)
1743 {
1744 lResult = SendMessageW(hDlgCtrl, LB_GETTEXT, iIndex, (LPARAM)pItem);
1745 if (lResult == LB_ERR)
1746 {
1747 CoTaskMemFree(pszSearchList);
1748 return NULL;
1749 }
1750 dwSize -= lResult + 1;
1751 pItem += wcslen(pItem);
1752 if (iIndex != iCount -1)
1753 {
1754 pItem[0] = L',';
1755 pItem++;
1756 }
1757 }
1758 pItem[0] = L'\0';
1759 return pszSearchList;
1760}
int32_t INT_PTR
Definition: typedefs.h:64
#define LB_ERR
Definition: winuser.h:2422
#define LB_GETCOUNT
Definition: winuser.h:2028
#define LB_GETTEXT
Definition: winuser.h:2039
#define LB_GETTEXTLEN
Definition: winuser.h:2040

Referenced by TcpipAdvancedDnsDlg().

◆ GetListViewItem()

BOOL GetListViewItem ( HWND  hDlgCtrl,
UINT  Index,
UINT  SubIndex,
WCHAR szBuffer,
UINT  BufferSize 
)

Definition at line 1190 of file tcpipconf_notify.c.

1191{
1192 LVITEMW li;
1193
1194 ZeroMemory(&li, sizeof(LVITEMW));
1195 li.mask = LVIF_TEXT;
1196 li.pszText = szBuffer;
1197 li.iItem = Index;
1198 li.iSubItem = SubIndex;
1199 li.cchTextMax = BufferSize;
1200 return SendMessageW(hDlgCtrl, LVM_GETITEMW, 0, (LPARAM)&li);
1201}
#define BufferSize
Definition: mmc.h:75

Referenced by StoreIPSettings().

◆ GetSelectedItem()

INT GetSelectedItem ( HWND  hDlgCtrl)

Definition at line 1066 of file tcpipconf_notify.c.

1067{
1068 LVITEMW li;
1069 UINT iItemCount, iIndex;
1070
1071 iItemCount = ListView_GetItemCount(hDlgCtrl);
1072 if (!iItemCount)
1073 return -1;
1074
1075 for (iIndex = 0; iIndex < iItemCount; iIndex++)
1076 {
1077 ZeroMemory(&li, sizeof(LVITEMW));
1078 li.mask = LVIF_STATE;
1079 li.stateMask = (UINT)-1;
1080 li.iItem = iIndex;
1081 if (SendMessageW(hDlgCtrl, LVM_GETITEMW, 0, (LPARAM)&li))
1082 {
1083 if (li.state & LVIS_SELECTED)
1084 return iIndex;
1085 }
1086 }
1087 return -1;
1088}
#define LVIF_STATE
Definition: commctrl.h:2312
#define LVIS_SELECTED
Definition: commctrl.h:2319

Referenced by DECLARE_INTERFACE_(), DeleteItemFromList(), DelItem(), and TcpipAdvancedIpDlg().

◆ impl_from_INetCfgComponentControl()

static __inline LPTcpipConfNotifyImpl impl_from_INetCfgComponentControl ( INetCfgComponentControl *  iface)
static

◆ INetCfgComponentControl_fnAddRef()

ULONG WINAPI INetCfgComponentControl_fnAddRef ( INetCfgComponentControl *  iface)

Definition at line 3061 of file tcpipconf_notify.c.

3063{
3065 return INetCfgComponentPropertyUi_AddRef((INetCfgComponentPropertyUi*)This);
3066}
#define INetCfgComponentPropertyUi_AddRef(p)
Definition: netcfgn.h:78
static __inline LPTcpipConfNotifyImpl impl_from_INetCfgComponentControl(INetCfgComponentControl *iface)

◆ INetCfgComponentControl_fnApplyPnpChanges()

HRESULT WINAPI INetCfgComponentControl_fnApplyPnpChanges ( INetCfgComponentControl *  iface,
INetCfgPnpReconfigCallback *  pICallback 
)

Definition at line 3411 of file tcpipconf_notify.c.

3414{
3415 //MessageBoxW(NULL, L"INetCfgComponentControl_fnApplyPnpChanges", NULL, MB_OK);
3416 return S_OK;
3417}

◆ INetCfgComponentControl_fnApplyRegistryChanges()

HRESULT WINAPI INetCfgComponentControl_fnApplyRegistryChanges ( INetCfgComponentControl *  iface)

Definition at line 3175 of file tcpipconf_notify.c.

3177{
3178 HKEY hKey;
3179 LPOLESTR pStr;
3180 DWORD dwSize;
3181 WCHAR szBuffer[200];
3182 TcpipSettings * pCurrentConfig, *pOldConfig;
3183 ULONG NTEInstance;
3184 DWORD DhcpApiVersion;
3185
3187
3188 pCurrentConfig = This->pCurrentConfig;
3189 This->pCurrentConfig = NULL;
3190
3191 if (FAILED(Initialize(This)))
3192 {
3193 This->pCurrentConfig = pCurrentConfig;
3194 return E_FAIL;
3195 }
3196 pOldConfig = This->pCurrentConfig;
3197 This->pCurrentConfig = pCurrentConfig;
3198
3199 //MessageBoxW(NULL, L"INetCfgComponentControl_fnApplyRegistryChanges", NULL, MB_OK);
3200
3201
3202 if (RegCreateKeyExW(HKEY_LOCAL_MACHINE, L"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters", 0, NULL, 0, KEY_WRITE, NULL, &hKey, NULL) == ERROR_SUCCESS)
3203 {
3204 if (pCurrentConfig->pDNS)
3205 {
3206 RegSetValueExW(hKey, L"UseDomainNameDevolution", 0, REG_DWORD, (LPBYTE)&pCurrentConfig->pDNS->UseDomainNameDevolution, sizeof(DWORD));
3207 RegSetValueExW(hKey, L"SearchList", 0, REG_SZ, (LPBYTE)pCurrentConfig->pDNS->szSearchList,
3208 (wcslen(pCurrentConfig->pDNS->szSearchList)+1) * sizeof(WCHAR));
3209 }
3210 if (pCurrentConfig->pFilter)
3211 {
3212 RegSetValueExW(hKey, L"EnableSecurityFilters", 0, REG_DWORD,
3213 (LPBYTE)&pCurrentConfig->pFilter->EnableSecurityFilters, sizeof(DWORD));
3214 }
3216 }
3217
3218 if (FAILED(StringFromCLSID(&This->NetCfgInstanceId, &pStr)))
3219 return E_FAIL;
3220
3221 swprintf(szBuffer, L"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\%s", pStr);
3222 CoTaskMemFree(pStr);
3223
3225 {
3226 if (pCurrentConfig->pDNS)
3227 {
3228 RegSetValueExW(hKey, L"RegisterAdapterName", 0, REG_DWORD, (LPBYTE)&This->pCurrentConfig->pDNS->RegisterAdapterName, sizeof(DWORD));
3229 RegSetValueExW(hKey, L"RegistrationEnabled", 0, REG_DWORD, (LPBYTE)&This->pCurrentConfig->pDNS->RegistrationEnabled, sizeof(DWORD));
3230 RegSetValueExW(hKey, L"Domain", 0, REG_SZ, (LPBYTE)This->pCurrentConfig->pDNS->szDomain,
3231 (wcslen(This->pCurrentConfig->pDNS->szDomain)+1) * sizeof(WCHAR));
3232 }
3233#if 0
3234 if (pCurrentConfig->pFilter)
3235 {
3236 if (pCurrentConfig->pFilter->szTCPAllowedPorts)
3237 {
3238 RegSetValueExW(hKey, L"TCPAllowedPorts", 0, REG_MULTI_SZ,
3239 (LPBYTE)pCurrentConfig->pFilter->szTCPAllowedPorts,
3240 pCurrentConfig->pFilter->TCPSize);
3241 }
3242 if (pCurrentConfig->pFilter->szUDPAllowedPorts)
3243 {
3244 RegSetValueExW(hKey, L"UDPAllowedPorts", 0, REG_MULTI_SZ,
3245 (LPBYTE)pCurrentConfig->pFilter->szUDPAllowedPorts,
3246 pCurrentConfig->pFilter->UDPSize);
3247 }
3248 if (pCurrentConfig->pFilter->szRawIPAllowedProtocols)
3249 {
3250 RegSetValueExW(hKey, L"RawIPAllowedProtocols", 0, REG_MULTI_SZ,
3251 (LPBYTE)pCurrentConfig->pFilter->szRawIPAllowedProtocols,
3252 pCurrentConfig->pFilter->IPSize);
3253 }
3254 }
3255#endif
3256 RegSetValueExW(hKey, L"EnableDHCP", 0, REG_DWORD, (LPBYTE)&pCurrentConfig->DhcpEnabled, sizeof(DWORD));
3257 if (pCurrentConfig->DhcpEnabled)
3258 {
3259 RegSetValueExW(hKey, L"IPAddress", 0, REG_MULTI_SZ, (LPBYTE)L"0.0.0.0\0", 9 * sizeof(WCHAR));
3260 RegSetValueExW(hKey, L"SubnetMask", 0, REG_MULTI_SZ, (LPBYTE)L"0.0.0.0\0", 9 * sizeof(WCHAR));
3261 if (!pOldConfig->DhcpEnabled)
3262 {
3263 /* Delete this adapter's current IP address */
3264 DeleteIPAddress(pOldConfig->Ip->NTEContext);
3265
3266 /* Delete all default routes for this adapter */
3267 dwSize = 0;
3269 {
3270 DWORD Index;
3272 if (pIpForwardTable)
3273 {
3274 if (GetIpForwardTable(pIpForwardTable, &dwSize, FALSE) == NO_ERROR)
3275 {
3276 for (Index = 0; Index < pIpForwardTable->dwNumEntries; Index++)
3277 {
3278 if (pIpForwardTable->table[Index].dwForwardIfIndex == pOldConfig->Index &&
3279 pIpForwardTable->table[Index].dwForwardDest == 0)
3280 {
3281 DeleteIpForwardEntry(&pIpForwardTable->table[Index]);
3282 }
3283 }
3284 }
3285 CoTaskMemFree(pIpForwardTable);
3286 }
3287 }
3288 }
3289 }
3290 else
3291 {
3292 /* Open the DHCP API if DHCP is enabled */
3293 if (pOldConfig->DhcpEnabled && DhcpCApiInitialize(&DhcpApiVersion) == NO_ERROR)
3294 {
3295 /* We have to tell DHCP about this */
3296 DhcpStaticRefreshParams(pCurrentConfig->Index,
3297 htonl(pCurrentConfig->Ip->IpAddress),
3298 htonl(pCurrentConfig->Ip->u.Subnetmask));
3299
3300 /* Close the API */
3302 }
3303 else
3304 {
3305 /* Delete this adapter's current static IP address */
3306 DeleteIPAddress(pOldConfig->Ip->NTEContext);
3307
3308 /* Add the static IP address via the standard IPHLPAPI function */
3309 AddIPAddress(htonl(pCurrentConfig->Ip->IpAddress),
3310 htonl(pCurrentConfig->Ip->u.Subnetmask),
3311 pCurrentConfig->Index,
3312 &pCurrentConfig->Ip->NTEContext,
3313 &NTEInstance);
3314 }
3315
3316 pStr = CreateMultiSzString(pCurrentConfig->Ip, IPADDR, &dwSize, FALSE);
3317 if(pStr)
3318 {
3319 RegSetValueExW(hKey, L"IPAddress", 0, REG_MULTI_SZ, (LPBYTE)pStr, dwSize);
3320 CoTaskMemFree(pStr);
3321 }
3322
3323 pStr = CreateMultiSzString(pCurrentConfig->Ip, SUBMASK, &dwSize, FALSE);
3324 if(pStr)
3325 {
3326 RegSetValueExW(hKey, L"SubnetMask", 0, REG_MULTI_SZ, (LPBYTE)pStr, dwSize);
3327 CoTaskMemFree(pStr);
3328 }
3329
3330 /* Delete all default routes for this adapter */
3331 dwSize = 0;
3333 {
3334 DWORD Index;
3336 if (pIpForwardTable)
3337 {
3338 if (GetIpForwardTable(pIpForwardTable, &dwSize, FALSE) == NO_ERROR)
3339 {
3340 for (Index = 0; Index < pIpForwardTable->dwNumEntries; Index++)
3341 {
3342 if (pIpForwardTable->table[Index].dwForwardIfIndex == pOldConfig->Index &&
3343 pIpForwardTable->table[Index].dwForwardDest == 0)
3344 {
3345 DeleteIpForwardEntry(&pIpForwardTable->table[Index]);
3346 }
3347 }
3348 }
3349 CoTaskMemFree(pIpForwardTable);
3350 }
3351 }
3352 }
3353
3354 if (pCurrentConfig->Gw)
3355 {
3356 MIB_IPFORWARDROW RouterMib;
3357 ZeroMemory(&RouterMib, sizeof(MIB_IPFORWARDROW));
3358
3359 RouterMib.dwForwardMetric1 = 1;
3360 RouterMib.dwForwardIfIndex = pOldConfig->Index;
3361 RouterMib.dwForwardNextHop = htonl(pCurrentConfig->Gw->IpAddress);
3362
3363 //TODO
3364 // add multiple gw addresses when required
3365
3366 if (CreateIpForwardEntry(&RouterMib) == NO_ERROR)
3367 {
3368 pStr = CreateMultiSzString(pCurrentConfig->Gw, IPADDR, &dwSize, FALSE);
3369 if(pStr)
3370 {
3371 RegSetValueExW(hKey, L"DefaultGateway", 0, REG_MULTI_SZ, (LPBYTE)pStr, dwSize);
3372 CoTaskMemFree(pStr);
3373 }
3374
3375 pStr = CreateMultiSzString(pCurrentConfig->Gw, METRIC, &dwSize, FALSE);
3376 if(pStr)
3377 {
3378 RegSetValueExW(hKey, L"DefaultGatewayMetric", 0, REG_MULTI_SZ, (LPBYTE)pStr, dwSize);
3379 CoTaskMemFree(pStr);
3380 }
3381 }
3382 }
3383 else
3384 {
3385 RegSetValueExW(hKey, L"DefaultGateway", 0, REG_MULTI_SZ, (LPBYTE)L"", 1 * sizeof(WCHAR));
3386 RegSetValueExW(hKey, L"DefaultGatewayMetric", 0, REG_MULTI_SZ, (LPBYTE)L"\0", sizeof(WCHAR) * 2);
3387 }
3388
3389 if (!pCurrentConfig->Ns || pCurrentConfig->AutoconfigActive)
3390 {
3391 RegDeleteValueW(hKey, L"NameServer");
3392 }
3393 else
3394 {
3395 pStr = CreateMultiSzString(pCurrentConfig->Ns, IPADDR, &dwSize, TRUE);
3396 if(pStr)
3397 {
3398 RegSetValueExW(hKey, L"NameServer", 0, REG_SZ, (LPBYTE)pStr, dwSize);
3399 //RegDeleteValueW(hKey, L"DhcpNameServer");
3400 CoTaskMemFree(pStr);
3401 }
3402 }
3403
3405 }
3406 return S_OK;
3407}
#define RegCloseKey(hKey)
Definition: registry.h:47
#define NO_ERROR
Definition: dderror.h:5
#define ERROR_INSUFFICIENT_BUFFER
Definition: dderror.h:10
#define ERROR_SUCCESS
Definition: deptool.c:10
void WINAPI DhcpCApiCleanup(void)
Definition: dhcpcsvc.c:71
DWORD APIENTRY DhcpCApiInitialize(LPDWORD Version)
Definition: dhcpcsvc.c:26
DWORD APIENTRY DhcpStaticRefreshParams(DWORD AdapterIndex, DWORD Address, DWORD Netmask)
Definition: dhcpcsvc.c:191
#define TRUE
Definition: types.h:120
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
Definition: reg.c:1091
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4897
LONG WINAPI RegDeleteValueW(HKEY hKey, LPCWSTR lpValueName)
Definition: reg.c:2352
HRESULT WINAPI StringFromCLSID(REFCLSID id, LPOLESTR *idstr)
Definition: compobj.c:2412
FxAutoRegKey hKey
#define FAILED(hr)
Definition: intsafe.h:51
DWORD WINAPI AddIPAddress(IPAddr Address, IPMask Netmask, DWORD IfIndex, PULONG NteContext, PULONG NteInstance)
Definition: iphlpapi_main.c:67
DWORD WINAPI GetIpForwardTable(PMIB_IPFORWARDTABLE pIpForwardTable, PULONG pdwSize, BOOL bOrder)
DWORD WINAPI DeleteIpForwardEntry(PMIB_IPFORWARDROW pRoute)
DWORD WINAPI CreateIpForwardEntry(PMIB_IPFORWARDROW pRoute)
DWORD WINAPI DeleteIPAddress(ULONG NTEContext)
struct _MIB_IPFORWARDTABLE * PMIB_IPFORWARDTABLE
#define REG_SZ
Definition: layer.c:22
#define htonl(x)
Definition: module.h:214
static LPOLESTR
Definition: stg_prop.c:27
#define REG_MULTI_SZ
Definition: nt_native.h:1501
#define KEY_WRITE
Definition: nt_native.h:1031
#define REG_DWORD
Definition: sdbapi.c:596
LPWSTR szRawIPAllowedProtocols
TcpipAdvancedDNSDlgSettings * pDNS
TcpFilterSettings * pFilter
DWORD dwForwardNextHop
Definition: ipmib.h:74
DWORD dwForwardMetric1
Definition: ipmib.h:88
IF_INDEX dwForwardIfIndex
Definition: ipmib.h:75
DWORD dwForwardDest
Definition: ipmib.h:71
DWORD dwNumEntries
Definition: ipmib.h:97
MIB_IPFORWARDROW table[1]
Definition: ipmib.h:98
static LPWSTR CreateMultiSzString(IP_ADDR *pAddr, COPY_TYPE Type, LPDWORD Size, BOOL bComma)
unsigned char * LPBYTE
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
static void Initialize()
Definition: xlate.c:212

◆ INetCfgComponentControl_fnCancelChanges()

HRESULT WINAPI INetCfgComponentControl_fnCancelChanges ( INetCfgComponentControl *  iface)

Definition at line 3421 of file tcpipconf_notify.c.

3423{
3424 //MessageBoxW(NULL, L"INetCfgComponentControl_fnCancelChanges", NULL, MB_OK);
3425 return S_OK;
3426}

◆ INetCfgComponentControl_fnInitialize()

HRESULT WINAPI INetCfgComponentControl_fnInitialize ( INetCfgComponentControl *  iface,
INetCfgComponent *  pIComp,
INetCfg *  pINetCfg,
BOOL  fInstalling 
)

Definition at line 3079 of file tcpipconf_notify.c.

3084{
3086
3087 This->pNCfg = pINetCfg;
3088 This->pNComp = pIComp;
3089
3090 return S_OK;
3091}

◆ INetCfgComponentControl_fnQueryInterface()

HRESULT WINAPI INetCfgComponentControl_fnQueryInterface ( INetCfgComponentControl *  iface,
REFIID  iid,
LPVOID ppvObj 
)

Definition at line 3050 of file tcpipconf_notify.c.

3054{
3056 return INetCfgComponentPropertyUi_QueryInterface((INetCfgComponentPropertyUi*)This, iid, ppvObj);
3057}
#define INetCfgComponentPropertyUi_QueryInterface(p, a, b)
Definition: netcfgn.h:77

◆ INetCfgComponentControl_fnRelease()

ULONG WINAPI INetCfgComponentControl_fnRelease ( INetCfgComponentControl *  iface)

Definition at line 3070 of file tcpipconf_notify.c.

3072{
3074 return INetCfgComponentPropertyUi_Release((INetCfgComponentPropertyUi*)This);
3075}
#define INetCfgComponentPropertyUi_Release(p)
Definition: netcfgn.h:79

◆ INetCfgComponentPropertyUi_fnAddRef()

ULONG WINAPI INetCfgComponentPropertyUi_fnAddRef ( INetCfgComponentPropertyUi *  iface)

Definition at line 2636 of file tcpipconf_notify.c.

2638{
2640 ULONG refCount = InterlockedIncrement(&This->ref);
2641
2642 return refCount;
2643}
#define InterlockedIncrement
Definition: armddk.h:53

◆ INetCfgComponentPropertyUi_fnApplyProperties()

HRESULT WINAPI INetCfgComponentPropertyUi_fnApplyProperties ( INetCfgComponentPropertyUi *  iface)

Definition at line 3014 of file tcpipconf_notify.c.

3016{
3017MessageBoxW(NULL, L"INetCfgComponentPropertyUi_fnApplyProperties", NULL, MB_OK);
3018 return S_OK;
3019}
#define MB_OK
Definition: winuser.h:784

◆ INetCfgComponentPropertyUi_fnCancelProperties()

HRESULT WINAPI INetCfgComponentPropertyUi_fnCancelProperties ( INetCfgComponentPropertyUi *  iface)

Definition at line 3024 of file tcpipconf_notify.c.

3026{
3027//MessageBoxW(NULL, L"INetCfgComponentPropertyUi_fnCancelProperties", NULL, MB_OK);
3028 return S_OK;
3029}

◆ INetCfgComponentPropertyUi_fnMergePropPages()

HRESULT WINAPI INetCfgComponentPropertyUi_fnMergePropPages ( INetCfgComponentPropertyUi *  iface,
DWORD pdwDefPages,
BYTE **  pahpspPrivate,
UINT pcPages,
HWND  hwndParent,
LPCWSTR pszStartPage 
)

Definition at line 2953 of file tcpipconf_notify.c.

2960{
2961 HPROPSHEETPAGE * hppages;
2962 UINT NumPages;
2963 HRESULT hr;
2965
2966 hr = Initialize(This);
2967 if (FAILED(hr))
2968 return hr;
2969
2970 if (This->pCurrentConfig->DhcpEnabled)
2971 NumPages = 2;
2972 else
2973 NumPages = 1;
2974
2975 hppages = (HPROPSHEETPAGE*) CoTaskMemAlloc(sizeof(HPROPSHEETPAGE) * NumPages);
2976 if (!hppages)
2977 return E_FAIL;
2978
2980 if (!hppages[0])
2981 {
2982 CoTaskMemFree(hppages);
2983 return E_FAIL;
2984 }
2985 if (NumPages == 2)
2986 {
2988 if (!hppages[1])
2989 {
2990 DestroyPropertySheetPage(hppages[0]);
2991 CoTaskMemFree(hppages);
2992 return E_FAIL;
2993 }
2994 }
2995
2996 *pahpspPrivate = (BYTE*)hppages;
2997 *pcPages = NumPages;
2998
2999 return S_OK;
3000}
BOOL WINAPI DestroyPropertySheetPage(HPROPSHEETPAGE hPropPage)
Definition: propsheet.c:3144
#define IDD_TCPIP_BASIC_DLG
Definition: resource.h:8
HRESULT hr
Definition: shlfolder.c:183
INT_PTR CALLBACK TcpipBasicDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
unsigned char BYTE
Definition: xxhash.c:193

◆ INetCfgComponentPropertyUi_fnQueryInterface()

HRESULT WINAPI INetCfgComponentPropertyUi_fnQueryInterface ( INetCfgComponentPropertyUi *  iface,
REFIID  iid,
LPVOID ppvObj 
)

Definition at line 2601 of file tcpipconf_notify.c.

2605{
2606 //LPOLESTR pStr;
2608
2609 *ppvObj = NULL;
2610
2611
2612 if (IsEqualIID (iid, &IID_IUnknown) ||
2614 {
2615 *ppvObj = This;
2617 return S_OK;
2618 }
2620 {
2621 *ppvObj = (LPVOID*)&This->lpVtblCompControl;
2623 return S_OK;
2624 }
2625
2626 //StringFromCLSID(iid, &pStr);
2627 //MessageBoxW(NULL, pStr, L"INetConnectionPropertyUi_fnQueryInterface", MB_OK);
2628 //CoTaskMemFree(pStr);
2629
2630 return E_NOINTERFACE;
2631}
const GUID IID_IUnknown
EXTERN_C const IID IID_INetCfgComponentPropertyUi
Definition: netcfgn.h:88
EXTERN_C const IID IID_INetCfgComponentControl
Definition: netcfgn.h:57
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define E_NOINTERFACE
Definition: winerror.h:2364

◆ INetCfgComponentPropertyUi_fnQueryPropertyUi()

HRESULT WINAPI INetCfgComponentPropertyUi_fnQueryPropertyUi ( INetCfgComponentPropertyUi *  iface,
IUnknown pUnkReserved 
)

Definition at line 2662 of file tcpipconf_notify.c.

2665{
2666 INetLanConnectionUiInfo * pLanInfo;
2667 HRESULT hr;
2669
2670 hr = IUnknown_QueryInterface(pUnkReserved, &IID_INetLanConnectionUiInfo, (LPVOID*)&pLanInfo);
2671 if (FAILED(hr))
2672 return hr;
2673
2674 INetLanConnectionUiInfo_GetDeviceGuid(pLanInfo, &This->NetCfgInstanceId);
2675
2676 //FIXME
2677 // check if tcpip is enabled on that binding */
2678 IUnknown_Release(pUnkReserved);
2679 return S_OK;
2680}
static IUnknown * pUnkReserved
Definition: asmenum.c:33
EXTERN_C const IID IID_INetLanConnectionUiInfo
Definition: netcfgn.h:109
#define INetLanConnectionUiInfo_GetDeviceGuid(p, a)
Definition: netcfgn.h:106

◆ INetCfgComponentPropertyUi_fnRelease()

ULONG WINAPI INetCfgComponentPropertyUi_fnRelease ( INetCfgComponentPropertyUi *  iface)

Definition at line 2647 of file tcpipconf_notify.c.

2649{
2651 ULONG refCount = InterlockedDecrement(&This->ref);
2652
2653 if (!refCount)
2654 {
2656 }
2657 return refCount;
2658}
#define InterlockedDecrement
Definition: armddk.h:52

◆ INetCfgComponentPropertyUi_fnSetContext()

HRESULT WINAPI INetCfgComponentPropertyUi_fnSetContext ( INetCfgComponentPropertyUi *  iface,
IUnknown pUnkReserved 
)

Definition at line 2684 of file tcpipconf_notify.c.

2687{
2689
2690 if (!iface || !pUnkReserved)
2691 return E_POINTER;
2692
2693 This->pUnknown = pUnkReserved;
2694 return S_OK;
2695}
#define E_POINTER
Definition: winerror.h:2365

◆ INetCfgComponentPropertyUi_fnValidateProperties()

HRESULT WINAPI INetCfgComponentPropertyUi_fnValidateProperties ( INetCfgComponentPropertyUi *  iface,
HWND  hwndDlg 
)

Definition at line 3004 of file tcpipconf_notify.c.

3007{
3008MessageBoxW(NULL, L"INetCfgComponentPropertyUi_fnValidateProperties", NULL, MB_OK);
3009 return S_OK;
3010}

◆ InitFilterListBox()

VOID InitFilterListBox ( LPWSTR  pData,
HWND  hwndDlg,
HWND  hDlgCtrl,
UINT  AllowButton,
UINT  RestrictButton,
UINT  AddButton,
UINT  DelButton 
)

Definition at line 231 of file tcpipconf_notify.c.

232{
233 LVITEMW li;
234 LPWSTR pCur;
235 INT iItem;
236
237 if (!pData || !_wtoi(pData))
238 {
239 SendDlgItemMessageW(hwndDlg, AllowButton, BM_SETCHECK, BST_CHECKED, 0);
241 EnableWindow(GetDlgItem(hwndDlg, DelButton), FALSE);
242 return;
243 }
244
245 pCur = pData;
246 memset(&li, 0x0, sizeof(LVITEMW));
247 li.mask = LVIF_TEXT;
248 iItem = 0;
249
250 while(pCur[0])
251 {
252 li.pszText = pCur;
253 li.iItem = iItem;
254 SendMessageW(hDlgCtrl, LVM_INSERTITEMW, 0, (LPARAM)&li);
255 iItem++;
256 pCur += wcslen(pCur) + 1;
257 }
258
259 if (!iItem)
260 SendDlgItemMessageW(hwndDlg, AllowButton, BM_SETCHECK, BST_CHECKED, 0);
261 else
262 SendDlgItemMessageW(hwndDlg, RestrictButton, BM_SETCHECK, BST_CHECKED, 0);
263}
static void AddButton(HWND hwndToolBar, int nImage, int nCommand)
Definition: wordpad.c:155
#define LVM_INSERTITEMW
Definition: commctrl.h:2404
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define BM_SETCHECK
Definition: winuser.h:1911
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
#define BST_CHECKED
Definition: winuser.h:197

Referenced by TcpipFilterSettingsDlg().

◆ Initialize()

HRESULT Initialize ( TcpipConfNotifyImpl This)

Definition at line 2825 of file tcpipconf_notify.c.

2826{
2828 WCHAR szBuffer[50];
2829 IP_ADAPTER_INFO * pCurrentAdapter;
2830 IP_ADAPTER_INFO * pInfo;
2831 PIP_PER_ADAPTER_INFO pPerInfo;
2833 LPOLESTR pStr;
2834 HRESULT hr;
2835 BOOL bFound;
2836 TcpipSettings * pCurSettings;
2837 ULONG uLength;
2838
2839 if (This->pCurrentConfig)
2840 return S_OK;
2841
2842 hr = StringFromCLSID(&This->NetCfgInstanceId, &pStr);
2843 if (FAILED(hr))
2844 return hr;
2845
2846
2847 dwSize = 0;
2849 {
2850 CoTaskMemFree(pStr);
2851 return E_FAIL;
2852 }
2853
2854 pInfo = CoTaskMemAlloc(dwSize);
2855 if (!pInfo)
2856 {
2857 CoTaskMemFree(pStr);
2858 return E_FAIL;
2859 }
2860
2861 if (GetAdaptersInfo(pInfo, &dwSize) != ERROR_SUCCESS)
2862 {
2863 CoTaskMemFree(pStr);
2864 CoTaskMemFree(pInfo);
2865 return E_FAIL;
2866 }
2867
2868 pCurrentAdapter = pInfo;
2869 bFound = FALSE;
2870 while(pCurrentAdapter)
2871 {
2872 szBuffer[0] = L'\0';
2873 if (MultiByteToWideChar(CP_ACP, 0, pCurrentAdapter->AdapterName, -1, szBuffer, sizeof(szBuffer)/sizeof(szBuffer[0])))
2874 {
2875 szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
2876 }
2877 if (!_wcsicmp(szBuffer, pStr))
2878 {
2879 bFound = TRUE;
2880 break;
2881 }
2882 pCurrentAdapter = pCurrentAdapter->Next;
2883 }
2884 CoTaskMemFree(pStr);
2885
2886 if (!bFound)
2887 {
2888 CoTaskMemFree(pInfo);
2889 return E_FAIL;
2890 }
2891
2892 pCurSettings = CoTaskMemAlloc(sizeof(TcpipSettings));
2893 if (!pCurSettings)
2894 {
2895 CoTaskMemFree(pInfo);
2896 return E_FAIL;
2897 }
2898
2899 ZeroMemory(pCurSettings, sizeof(TcpipSettings));
2900 This->pCurrentConfig = pCurSettings;
2901 pCurSettings->DhcpEnabled = pCurrentAdapter->DhcpEnabled;
2902 pCurSettings->Index = pCurrentAdapter->Index;
2903
2904 if (!pCurrentAdapter->DhcpEnabled)
2905 {
2906 CopyIpAddrString(&pCurrentAdapter->IpAddressList, &pCurSettings->Ip, SUBMASK, NULL);
2907 }
2908
2909 CopyIpAddrString(&pCurrentAdapter->GatewayList, &pCurSettings->Gw, METRIC, NULL);
2910
2911 uLength = sizeof(IP_PER_ADAPTER_INFO);
2913
2914 if (GetPerAdapterInfo(pCurrentAdapter->Index, &Info, &uLength) == ERROR_BUFFER_OVERFLOW)
2915 {
2916 pPerInfo = (PIP_PER_ADAPTER_INFO)CoTaskMemAlloc(uLength);
2917 if (pPerInfo)
2918 {
2919 Status = GetPerAdapterInfo(pCurrentAdapter->Index, pPerInfo, &uLength);
2920 if (Status == NOERROR)
2921 {
2922 if (!pPerInfo->AutoconfigActive)
2923 {
2924 CopyIpAddrString(&pPerInfo->DnsServerList, &pCurSettings->Ns, IPADDR, NULL);
2925 }
2926 pCurSettings->AutoconfigActive = pPerInfo->AutoconfigActive;
2927 }
2928 CoTaskMemFree(pPerInfo);
2929 }
2930 }
2931 else
2932 {
2933 if (!Info.AutoconfigActive)
2934 {
2935 CopyIpAddrString(&Info.DnsServerList, &pCurSettings->Ns, IPADDR, NULL);
2936 }
2937 pCurSettings->AutoconfigActive = Info.AutoconfigActive;
2938 }
2939
2941 return E_FAIL;
2942
2944 return E_FAIL;
2945
2946 CoTaskMemFree(pInfo);
2947
2948 return S_OK;
2949}
Status
Definition: gdiplustypes.h:25
DWORD WINAPI GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen)
DWORD WINAPI GetPerAdapterInfo(ULONG IfIndex, PIP_PER_ADAPTER_INFO pPerAdapterInfo, PULONG pOutBufLen)
struct _IP_PER_ADAPTER_INFO IP_PER_ADAPTER_INFO
struct _IP_PER_ADAPTER_INFO * PIP_PER_ADAPTER_INFO
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
IP_ADDR_STRING IpAddressList
Definition: iptypes.h:63
char AdapterName[MAX_ADAPTER_NAME_LENGTH+4]
Definition: iptypes.h:55
IP_ADDR_STRING GatewayList
Definition: iptypes.h:64
struct _IP_ADAPTER_INFO * Next
Definition: iptypes.h:53
UINT DhcpEnabled
Definition: iptypes.h:61
IP_ADDR_STRING DnsServerList
Definition: iptypes.h:77
HRESULT CopyIpAddrString(IP_ADDR_STRING *pSrc, IP_ADDR **pTarget, COPY_TYPE Type, LPWSTR szMetric)
HRESULT LoadFilterSettings(TcpipConfNotifyImpl *This)
HRESULT LoadDNSSettings(TcpipConfNotifyImpl *This)
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
Definition: wdfchildlist.h:690
#define ERROR_BUFFER_OVERFLOW
Definition: winerror.h:185
#define NOERROR
Definition: winerror.h:2354

◆ InitializePropertySheetPage()

HPROPSHEETPAGE InitializePropertySheetPage ( LPWSTR  resname,
DLGPROC  dlgproc,
LPARAM  lParam,
LPWSTR  szTitle 
)

Definition at line 514 of file tcpipconf_notify.c.

515{
516 PROPSHEETPAGEW ppage;
517
518 memset(&ppage, 0x0, sizeof(PROPSHEETPAGEW));
519 ppage.dwSize = sizeof(PROPSHEETPAGEW);
520 ppage.dwFlags = PSP_DEFAULT;
521 ppage.u.pszTemplate = resname;
522 ppage.pfnDlgProc = dlgproc;
523 ppage.lParam = lParam;
525 if (szTitle)
526 {
527 ppage.dwFlags |= PSP_USETITLE;
528 ppage.pszTitle = szTitle;
529 }
530 return CreatePropertySheetPageW(&ppage);
531}
LPARAM lParam
Definition: combotst.c:139
HPROPSHEETPAGE WINAPI CreatePropertySheetPageW(LPCPROPSHEETPAGEW lpPropSheetPage)
Definition: propsheet.c:3075
#define PSP_USETITLE
Definition: prsht.h:26
#define PSP_DEFAULT
Definition: prsht.h:22
struct _PROPSHEETPAGEW PROPSHEETPAGEW
DLGPROC pfnDlgProc
Definition: prsht.h:226
DWORD dwSize
Definition: prsht.h:214
DWORD dwFlags
Definition: prsht.h:215
LPARAM lParam
Definition: prsht.h:227
LPCWSTR pszTemplate
Definition: prsht.h:218
LPCWSTR pszTitle
Definition: prsht.h:225
HINSTANCE hInstance
Definition: prsht.h:216

Referenced by AddAlternativeDialog(), INetCfgComponentPropertyUi_fnMergePropPages(), and LaunchAdvancedTcpipSettings().

◆ InitializeTcpipAdvancedDNSDlg()

VOID InitializeTcpipAdvancedDNSDlg ( HWND  hwndDlg,
TcpipConfNotifyImpl This 
)

Definition at line 1565 of file tcpipconf_notify.c.

1568{
1569 WCHAR szBuffer[200];
1570 LPWSTR pFirst, pSep, pList;
1571 IP_ADDR * pAddr;
1572 DWORD dwIpAddr;
1573
1574 /* insert DNS addresses */
1575 pAddr = This->pCurrentConfig->Ns;
1576 while(pAddr)
1577 {
1578 dwIpAddr = pAddr->IpAddress;
1579 swprintf(szBuffer, L"%lu.%lu.%lu.%lu",
1580 FIRST_IPADDRESS(dwIpAddr), SECOND_IPADDRESS(dwIpAddr), THIRD_IPADDRESS(dwIpAddr), FOURTH_IPADDRESS(dwIpAddr));
1581
1582 SendDlgItemMessageW(hwndDlg, IDC_DNSADDRLIST, LB_ADDSTRING, 0, (LPARAM)szBuffer);
1583 pAddr = pAddr->Next;
1584 }
1586
1587 if (!This->pCurrentConfig->pDNS)
1588 return;
1589
1590 if (This->pCurrentConfig->pDNS->RegisterAdapterName)
1592 else
1594
1595 if (This->pCurrentConfig->pDNS->RegistrationEnabled)
1597
1598 if (This->pCurrentConfig->pDNS->szDomain[0])
1599 SendDlgItemMessageW(hwndDlg, IDC_SUFFIX, WM_SETTEXT, 0, (LPARAM)szBuffer);
1600
1601 if (This->pCurrentConfig->pDNS->UseDomainNameDevolution)
1603
1604 if (!This->pCurrentConfig->pDNS->szSearchList || (wcslen(This->pCurrentConfig->pDNS->szSearchList) == 0))
1605 {
1608
1609 return;
1610 }
1611
1612 pList = This->pCurrentConfig->pDNS->szSearchList;
1613 if (wcslen(pList))
1614 {
1615 pFirst = pList;
1616 do
1617 {
1618 pSep = wcschr(pFirst, L',');
1619 if (pSep)
1620 {
1621 pSep[0] = L'\0';
1623 pFirst = pSep + 1;
1624 pSep[0] = L',';
1625 }
1626 else
1627 {
1629 break;
1630 }
1631 }while(TRUE);
1632
1636 }
1637}
#define IDC_DNSSUFFIXLIST
Definition: resource.h:57
#define IDC_SUFFIX
Definition: resource.h:63
#define IDC_USESUFFIX
Definition: resource.h:65
#define IDC_REGSUFFIX
Definition: resource.h:64
#define IDC_PRIMSUFFIX
Definition: resource.h:54
#define IDC_SELSUFFIX
Definition: resource.h:56
#define IDC_DNSADDRLIST
Definition: resource.h:48
#define IDC_TOPPRIMSUFFIX
Definition: resource.h:55
#define IDC_DNSSUFFIXADD
Definition: resource.h:60
FxChildList * pList
#define LB_ADDSTRING
Definition: winuser.h:2021
#define WM_SETTEXT
Definition: winuser.h:1607
#define LB_SETCURSEL
Definition: winuser.h:2053

Referenced by TcpipAdvancedDnsDlg().

◆ InitializeTcpipAdvancedIpDlg()

VOID InitializeTcpipAdvancedIpDlg ( HWND  hwndDlg,
TcpipConfNotifyImpl This 
)

Definition at line 670 of file tcpipconf_notify.c.

673{
674 RECT rect;
675 LVITEMW li;
676 WCHAR szBuffer[100];
677
680 InsertColumnToListView(GetDlgItem(hwndDlg, IDC_IPLIST), IDS_SUBMASK, 1, (rect.right - rect.left - 100));
681
682 if (This->pCurrentConfig->DhcpEnabled)
683 {
684 if (LoadStringW(netcfgx_hInstance, IDS_DHCPACTIVE, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
685 {
686 ZeroMemory(&li, sizeof(LVITEMW));
687 li.mask = LVIF_TEXT;
688 li.pszText = szBuffer;
690 }
692 }
693 else
694 {
695 InsertIpAddressToListView(GetDlgItem(hwndDlg, IDC_IPLIST), This->pCurrentConfig->Ip, TRUE);
696 }
697
700
703 InsertColumnToListView(GetDlgItem(hwndDlg, IDC_GWLIST), IDS_METRIC, 1, (rect.right - rect.left - 100));
704
705 InsertIpAddressToListView(GetDlgItem(hwndDlg, IDC_GWLIST), This->pCurrentConfig->Gw, FALSE);
706
709
711}
#define IDS_METRIC
Definition: resource.h:77
#define IDC_IPDEL
Definition: resource.h:37
#define IDC_GWDEL
Definition: resource.h:41
#define IDS_SUBMASK
Definition: resource.h:104
#define IDC_IPLIST
Definition: resource.h:34
#define IDC_GWMOD
Definition: resource.h:40
#define IDC_METRIC
Definition: resource.h:43
#define IDS_DHCPACTIVE
Definition: resource.h:107
#define IDS_GATEWAY
Definition: resource.h:105
#define IDC_IPADD
Definition: resource.h:35
#define IDC_IPMOD
Definition: resource.h:36
#define IDS_IPADDR
Definition: resource.h:103
#define IDC_GWLIST
Definition: resource.h:38
& rect
Definition: startmenu.cpp:1413
VOID InsertIpAddressToListView(HWND hDlgCtrl, IP_ADDR *pAddr, BOOL bSubMask)
VOID InsertColumnToListView(HWND hDlgCtrl, UINT ResId, UINT SubItem, UINT Size)
#define EM_LIMITTEXT
Definition: winuser.h:1990
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)

Referenced by TcpipAdvancedIpDlg().

◆ InitializeTcpipAdvancedOptDlg()

VOID InitializeTcpipAdvancedOptDlg ( HWND  hwndDlg,
TcpipConfNotifyImpl This 
)

Definition at line 539 of file tcpipconf_notify.c.

542{
543 WCHAR szText[500];
544 /* store context */
546
547 if (LoadStringW(netcfgx_hInstance, IDS_TCPFILTER, szText, sizeof(szText)/sizeof(WCHAR)))
548 {
549 szText[(sizeof(szText)/sizeof(WCHAR))-1] = L'\0';
550 if (SendDlgItemMessageW(hwndDlg, IDC_OPTLIST, LB_ADDSTRING, 0, (LPARAM)szText) != LB_ERR)
552 }
553
554 if (LoadStringW(netcfgx_hInstance, IDS_TCPFILTERDESC, szText, sizeof(szText)/sizeof(WCHAR)))
555 {
556 szText[(sizeof(szText)/sizeof(WCHAR))-1] = L'\0';
557 SendDlgItemMessageW(hwndDlg, IDC_OPTDESC, WM_SETTEXT, 0, (LPARAM)szText);
558 }
559}
#define IDS_TCPFILTERDESC
Definition: resource.h:101
#define IDC_OPTLIST
Definition: resource.h:67
#define IDS_TCPFILTER
Definition: resource.h:102
#define IDC_OPTDESC
Definition: resource.h:69
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define SetWindowLongPtr
Definition: treelist.c:70
#define DWLP_USER
Definition: winuser.h:866

Referenced by TcpipAdvancedOptDlg().

◆ InitializeTcpipBasicDlgCtrls()

HRESULT InitializeTcpipBasicDlgCtrls ( HWND  hwndDlg,
TcpipSettings pCurSettings 
)

Definition at line 2326 of file tcpipconf_notify.c.

2329{
2334
2339
2344
2349
2354
2355 if (pCurSettings->DhcpEnabled)
2356 {
2362 }
2363 else
2364 {
2366
2367 if (pCurSettings->Ip)
2368 {
2369 /* set current ip address */
2370 SendDlgItemMessageA(hwndDlg, IDC_IPADDR, IPM_SETADDRESS, 0, (LPARAM)pCurSettings->Ip->IpAddress);
2371 /* set current hostmask */
2372 SendDlgItemMessageA(hwndDlg, IDC_SUBNETMASK, IPM_SETADDRESS, 0, (LPARAM)pCurSettings->Ip->u.Subnetmask);
2373 }
2374 }
2375
2376 if (pCurSettings->Gw && pCurSettings->Gw->IpAddress)
2377 {
2378 /* set current gateway */
2379 SendDlgItemMessageA(hwndDlg, IDC_DEFGATEWAY, IPM_SETADDRESS, 0, (LPARAM)pCurSettings->Gw->IpAddress);
2380 }
2381
2382 if (pCurSettings->AutoconfigActive)
2383 {
2387 }
2388 else
2389 {
2393 if (pCurSettings->Ns)
2394 {
2395 SendDlgItemMessageW(hwndDlg, IDC_DNS1, IPM_SETADDRESS, 0, (LPARAM)pCurSettings->Ns->IpAddress);
2396 if (pCurSettings->Ns->Next)
2397 {
2398 SendDlgItemMessageW(hwndDlg, IDC_DNS2, IPM_SETADDRESS, 0, (LPARAM)pCurSettings->Ns->Next->IpAddress);
2399 }
2400 else
2401 {
2403 }
2404 }
2405 else
2406 {
2409 }
2410 }
2411
2412 return S_OK;
2413}
#define IDC_NODHCP
Definition: resource.h:24
#define IDC_DNS1
Definition: resource.h:30
#define IDC_USEDHCP
Definition: resource.h:23
#define IDC_SUBNETMASK
Definition: resource.h:26
#define IDC_FIXEDDNS
Definition: resource.h:29
#define IDC_AUTODNS
Definition: resource.h:28
#define IDC_DNS2
Definition: resource.h:31
#define IDC_DEFGATEWAY
Definition: resource.h:27
#define IDC_IPADDR
Definition: resource.h:25
#define MAKEIPRANGE(low, high)
Definition: commctrl.h:4484
#define IPM_SETADDRESS
Definition: commctrl.h:4466
#define IPM_CLEARADDRESS
Definition: commctrl.h:4465
#define IPM_SETRANGE
Definition: commctrl.h:4468
LRESULT WINAPI SendDlgItemMessageA(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

Referenced by LaunchAdvancedTcpipSettings(), and TcpipBasicDlg().

◆ InsertColumnToListView()

VOID InsertColumnToListView ( HWND  hDlgCtrl,
UINT  ResId,
UINT  SubItem,
UINT  Size 
)

Definition at line 597 of file tcpipconf_notify.c.

602{
603 WCHAR szBuffer[200];
604 LVCOLUMNW lc;
605
606 if (!LoadStringW(netcfgx_hInstance, ResId, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
607 return;
608
609 memset(&lc, 0, sizeof(LV_COLUMN) );
611 lc.iSubItem = SubItem;
612 lc.fmt = LVCFMT_FIXED_WIDTH;
613 lc.cx = Size;
614 lc.cchTextMax = wcslen(szBuffer);
615 lc.pszText = szBuffer;
616
617 (void)SendMessageW(hDlgCtrl, LVM_INSERTCOLUMNW, SubItem, (LPARAM)&lc);
618}
#define LVCF_WIDTH
Definition: commctrl.h:2587
#define LVM_INSERTCOLUMNW
Definition: commctrl.h:2632
#define LVCF_FMT
Definition: commctrl.h:2586
#define LVCF_SUBITEM
Definition: commctrl.h:2589
#define LVCF_TEXT
Definition: commctrl.h:2588
#define LV_COLUMN
Definition: commctrl.h:2547
int cchTextMax
Definition: commctrl.h:2568
LPWSTR pszText
Definition: commctrl.h:2567

Referenced by InitializeTcpipAdvancedIpDlg(), and TcpipFilterSettingsDlg().

◆ InsertIpAddressToListView()

VOID InsertIpAddressToListView ( HWND  hDlgCtrl,
IP_ADDR pAddr,
BOOL  bSubMask 
)

Definition at line 621 of file tcpipconf_notify.c.

625{
626 WCHAR szBuffer[70];
627 DWORD dwIpAddr;
628 UINT itemCount = 0;
629 LVITEMW li;
630
631 while(pAddr)
632 {
633 ZeroMemory(&li, sizeof(li));
634 li.mask = LVIF_TEXT;
635 li.iItem = itemCount;
636 li.iSubItem = 0;
637 dwIpAddr = pAddr->IpAddress;
638 swprintf(szBuffer, L"%lu.%lu.%lu.%lu",
639 FIRST_IPADDRESS(dwIpAddr), SECOND_IPADDRESS(dwIpAddr), THIRD_IPADDRESS(dwIpAddr), FOURTH_IPADDRESS(dwIpAddr));
640
641 li.pszText = szBuffer;
642 li.iItem = SendMessageW(hDlgCtrl, LVM_INSERTITEMW, 0, (LPARAM)&li);
643 if (li.iItem != -1)
644 {
645 if (bSubMask)
646 {
647 dwIpAddr = pAddr->u.Subnetmask;
648 swprintf(szBuffer, L"%lu.%lu.%lu.%lu",
649 FIRST_IPADDRESS(dwIpAddr), SECOND_IPADDRESS(dwIpAddr), THIRD_IPADDRESS(dwIpAddr), FOURTH_IPADDRESS(dwIpAddr));
650 }
651 else
652 {
653 if (pAddr->u.Metric)
654 swprintf(szBuffer, L"%u", pAddr->u.Metric);
655 else
656 LoadStringW(netcfgx_hInstance, IDS_AUTOMATIC, szBuffer, sizeof(szBuffer)/sizeof(WCHAR));
657 }
658
659 li.mask = LVIF_TEXT;
660 li.iSubItem = 1;
661 li.pszText = szBuffer;
662 SendMessageW(hDlgCtrl, LVM_SETITEMW, 0, (LPARAM)&li);
663 }
664 itemCount++;
665 pAddr = pAddr->Next;
666 }
667}
#define IDS_AUTOMATIC
Definition: resource.h:108
#define LVM_SETITEMW
Definition: commctrl.h:2397

Referenced by InitializeTcpipAdvancedIpDlg().

◆ LaunchAdvancedTcpipSettings()

VOID LaunchAdvancedTcpipSettings ( HWND  hwndDlg,
TcpipConfNotifyImpl This 
)

Definition at line 2101 of file tcpipconf_notify.c.

2104{
2105 PROPSHEETHEADERW pinfo;
2106 HPROPSHEETPAGE hppages[3];
2107 WCHAR szBuffer[100];
2108
2112
2113
2114 if (LoadStringW(netcfgx_hInstance, IDS_TCPIP, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
2115 szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
2116 else
2117 szBuffer[0] = L'\0';
2118
2119 ZeroMemory(&pinfo, sizeof(PROPSHEETHEADERW));
2120 pinfo.dwSize = sizeof(PROPSHEETHEADERW);
2121 pinfo.dwFlags = PSH_NOCONTEXTHELP | PSH_PROPTITLE | PSH_NOAPPLYNOW |
2123 pinfo.u3.phpage = hppages;
2124 pinfo.nPages = 3;
2125 pinfo.hwndParent = hwndDlg;
2127 pinfo.pszCaption = szBuffer;
2129 pinfo.pfnCallback = PropSheetProc;
2130
2132 if (PropertySheetW(&pinfo) > 0)
2133 {
2134 InitializeTcpipBasicDlgCtrls(hwndDlg, This->pCurrentConfig);
2135 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
2136 }
2137}
INT_PTR WINAPI PropertySheetW(LPCPROPSHEETHEADERW lppsh)
Definition: propsheet.c:2905
#define IDD_TCPIP_ADVOPT_DLG
Definition: resource.h:12
#define IDD_TCPIP_ADVIP_DLG
Definition: resource.h:10
#define IDD_TCPIP_ADVDNS_DLG
Definition: resource.h:11
#define IDI_NETWORK
Definition: resource.h:4
#define PSH_PROPTITLE
Definition: prsht.h:40
#define PropSheet_Changed(d, w)
Definition: prsht.h:344
#define PSH_USECALLBACK
Definition: prsht.h:48
#define PSH_USEICONID
Definition: prsht.h:42
struct _PROPSHEETHEADERW PROPSHEETHEADERW
#define PSH_NOAPPLYNOW
Definition: prsht.h:47
HINSTANCE hInstance
Definition: prsht.h:296
DWORD dwSize
Definition: prsht.h:293
DWORD dwFlags
Definition: prsht.h:294
LPCWSTR pszIcon
Definition: prsht.h:299
HWND hwndParent
Definition: prsht.h:295
PFNPROPSHEETCALLBACK pfnCallback
Definition: prsht.h:311
HPROPSHEETPAGE * phpage
Definition: prsht.h:309
LPCWSTR pszCaption
Definition: prsht.h:301
HRESULT InitializeTcpipBasicDlgCtrls(HWND hwndDlg, TcpipSettings *pCurSettings)
static int CALLBACK PropSheetProc(HWND hwndDlg, UINT uMsg, LPARAM lParam)
INT_PTR CALLBACK TcpipAdvancedDnsDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
INT_PTR CALLBACK TcpipAdvancedOptDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
INT_PTR StoreTcpipBasicSettings(HWND hwndDlg, TcpipConfNotifyImpl *This, BOOL bApply)
INT_PTR CALLBACK TcpipAdvancedIpDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
HWND WINAPI GetParent(_In_ HWND)

Referenced by TcpipBasicDlg().

◆ LoadDNSSettings()

HRESULT LoadDNSSettings ( TcpipConfNotifyImpl This)

Definition at line 2698 of file tcpipconf_notify.c.

2700{
2701 LPOLESTR pStr;
2702 WCHAR szBuffer[200];
2703 HKEY hKey;
2704 DWORD dwSize;
2705
2706
2708 if (!This->pCurrentConfig->pDNS)
2709 return E_FAIL;
2710
2711 ZeroMemory(This->pCurrentConfig->pDNS, sizeof(TcpipAdvancedDNSDlgSettings));
2712
2713 if (FAILED(StringFromCLSID(&This->NetCfgInstanceId, &pStr)))
2714 return E_FAIL;
2715
2716 swprintf(szBuffer, L"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\%s", pStr);
2717 CoTaskMemFree(pStr);
2719 {
2720 dwSize = sizeof(DWORD);
2721 RegQueryValueExW(hKey, L"RegisterAdapterName", NULL, NULL, (LPBYTE)&This->pCurrentConfig->pDNS->RegisterAdapterName, &dwSize);
2722
2723 dwSize = sizeof(DWORD);
2724 RegQueryValueExW(hKey, L"RegistrationEnabled", NULL, NULL, (LPBYTE)&This->pCurrentConfig->pDNS->RegistrationEnabled, &dwSize);
2725
2726 dwSize = sizeof(This->pCurrentConfig->pDNS->szDomain);
2727 RegQueryValueExW(hKey, L"Domain", NULL, NULL, (LPBYTE)This->pCurrentConfig->pDNS->szDomain, &dwSize);
2728
2730 }
2731
2732 if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters", 0, KEY_READ, &hKey) == ERROR_SUCCESS)
2733 {
2734 dwSize = sizeof(DWORD);
2735 RegQueryValueExW(hKey, L"UseDomainNameDevolution", NULL, NULL, (LPBYTE)&This->pCurrentConfig->pDNS->UseDomainNameDevolution, &dwSize);
2736
2737 dwSize = 0;
2738 if (RegQueryValueExW(hKey, L"SearchList", NULL, NULL, NULL, &dwSize) == ERROR_SUCCESS)
2739 {
2740 This->pCurrentConfig->pDNS->szSearchList = (LPWSTR)CoTaskMemAlloc(dwSize);
2741 if (This->pCurrentConfig->pDNS->szSearchList)
2742 {
2743 if (RegQueryValueExW(hKey, L"SearchList", NULL, NULL, (LPBYTE)This->pCurrentConfig->pDNS->szSearchList, &dwSize) != ERROR_SUCCESS)
2744 {
2745 CoTaskMemFree(This->pCurrentConfig->pDNS->szSearchList);
2746 This->pCurrentConfig->pDNS->szSearchList = NULL;
2747 }
2748 }
2749 }
2751 }
2752 return S_OK;
2753}
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3353
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4118
#define KEY_READ
Definition: nt_native.h:1023
#define DWORD
Definition: nt_native.h:44

Referenced by Initialize().

◆ LoadFilterSettings()

HRESULT LoadFilterSettings ( TcpipConfNotifyImpl This)

Definition at line 2778 of file tcpipconf_notify.c.

2780{
2781 HKEY hKey;
2782 TcpFilterSettings *pFilter;
2783 WCHAR szBuffer[200];
2784 LPOLESTR pStr;
2785 DWORD dwVal, dwSize;
2786
2788 if (!pFilter)
2789 return E_FAIL;
2790
2791 ZeroMemory(pFilter, sizeof(TcpFilterSettings));
2792 This->pCurrentConfig->pFilter = pFilter;
2793
2794
2795 if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters", 0, KEY_READ, &hKey) == ERROR_SUCCESS)
2796 {
2797 dwSize = sizeof(DWORD);
2798 if (RegQueryValueExW(hKey, L"EnableSecurityFilters", NULL, NULL, (LPBYTE)&dwVal, &dwSize) == ERROR_SUCCESS)
2799 pFilter->EnableSecurityFilters = dwVal;
2801 }
2802 else
2803 {
2804 pFilter->EnableSecurityFilters = FALSE;
2805 }
2806
2807 if (FAILED(StringFromCLSID(&This->NetCfgInstanceId, &pStr)))
2808 return E_FAIL;
2809
2810 swprintf(szBuffer, L"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\%s", pStr);
2811 CoTaskMemFree(pStr);
2813 {
2814 return S_OK;
2815 }
2816 pFilter->szTCPAllowedPorts = LoadTcpFilterSettingsFromRegistry(hKey, L"TCPAllowedPorts", &pFilter->TCPSize);
2817 pFilter->szUDPAllowedPorts = LoadTcpFilterSettingsFromRegistry(hKey, L"UDPAllowedPorts", &pFilter->UDPSize);
2818 pFilter->szRawIPAllowedProtocols = LoadTcpFilterSettingsFromRegistry(hKey, L"RawIPAllowedProtocols", &pFilter->IPSize);
2820 return S_OK;
2821}
LPWSTR LoadTcpFilterSettingsFromRegistry(HKEY hKey, LPCWSTR szName, LPDWORD Size)

Referenced by Initialize().

◆ LoadTcpFilterSettingsFromRegistry()

LPWSTR LoadTcpFilterSettingsFromRegistry ( HKEY  hKey,
LPCWSTR  szName,
LPDWORD  Size 
)

Definition at line 2756 of file tcpipconf_notify.c.

2757{
2758 DWORD dwSize;
2759 LPWSTR pData;
2760
2762 return NULL;
2763
2765 if (!pData)
2766 return NULL;
2767
2769 {
2771 return NULL;
2772 }
2773 *Size = dwSize;
2774 return pData;
2775}
static const WCHAR szName[]
Definition: powrprof.c:45

Referenced by LoadFilterSettings().

◆ MoveItem()

VOID MoveItem ( HWND  hDlgCtrl,
INT  pos 
)

Definition at line 1674 of file tcpipconf_notify.c.

1677{
1678 WCHAR szBuffer[100];
1679 LRESULT lResult;
1680
1681 lResult = SendMessageW(hDlgCtrl, LB_GETCURSEL, 0, 0);
1682 if (lResult != LB_ERR)
1683 {
1684 if (SendMessageW(hDlgCtrl, LB_GETTEXTLEN, (WPARAM)lResult, 0) < sizeof(szBuffer)/sizeof(WCHAR) - 1)
1685 {
1686 if (SendMessageW(hDlgCtrl, LB_GETTEXT, (WPARAM)lResult, (LPARAM)szBuffer) != LB_ERR)
1687 {
1688 SendMessageW(hDlgCtrl, LB_DELETESTRING, (WPARAM)lResult, 0);
1689 SendMessageW(hDlgCtrl, LB_INSERTSTRING, (WPARAM)lResult + pos, (LPARAM)szBuffer);
1690 SendMessageW(hDlgCtrl, LB_SETCURSEL, (WPARAM)lResult + pos, 0);
1691 }
1692 }
1693 }
1694}
LONG_PTR LRESULT
Definition: windef.h:209
UINT_PTR WPARAM
Definition: windef.h:207
#define LB_DELETESTRING
Definition: winuser.h:2022
#define LB_INSERTSTRING
Definition: winuser.h:2043
#define LB_GETCURSEL
Definition: winuser.h:2029

Referenced by TcpipAdvancedDnsDlg().

◆ PropSheetProc()

static int CALLBACK PropSheetProc ( HWND  hwndDlg,
UINT  uMsg,
LPARAM  lParam 
)
static

Definition at line 2084 of file tcpipconf_notify.c.

2085{
2086 // NOTE: This callback is needed to set large icon correctly.
2087 HICON hIcon;
2088 switch (uMsg)
2089 {
2090 case PSCB_INITIALIZED:
2091 {
2093 SendMessageW(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
2094 break;
2095 }
2096 }
2097 return 0;
2098}
static HICON
Definition: imagelist.c:84
HICON hIcon
Definition: msconfig.c:44
#define PSCB_INITIALIZED
Definition: prsht.h:75
#define ICON_BIG
Definition: tnclass.cpp:51
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE hInstance, _In_ LPCWSTR lpIconName)
Definition: cursoricon.c:2044

Referenced by LaunchAdvancedTcpipSettings().

◆ RemoveItem()

VOID RemoveItem ( HWND  hDlgCtrl)

Definition at line 1696 of file tcpipconf_notify.c.

1698{
1699 LRESULT lResult, lCount;
1700
1701 lResult = SendMessageW(hDlgCtrl, LB_GETCURSEL, 0, 0);
1702 if (lResult != LB_ERR)
1703 {
1704 SendMessageW(hDlgCtrl, LB_DELETESTRING, (WPARAM)lResult, 0);
1705 lCount = SendMessageW(hDlgCtrl, LB_GETCOUNT, 0, 0);
1706 if (lResult + 1 < lCount)
1707 SendMessageW(hDlgCtrl, LB_SETCURSEL, (WPARAM)lResult, 0);
1708 else
1709 SendMessageW(hDlgCtrl, LB_SETCURSEL, (WPARAM)lCount-1, 0);
1710 }
1711}

Referenced by TcpipAdvancedDnsDlg().

◆ StoreDNSSettings()

VOID StoreDNSSettings ( HWND  hDlgCtrl,
TcpipConfNotifyImpl This 
)

Definition at line 1763 of file tcpipconf_notify.c.

1766{
1767 INT iCount, iIndex;
1768 WCHAR Ip[16];
1769 IP_ADDR *pCur, *pLast;
1770
1771 FreeIPAddr(This->pCurrentConfig->Ns);
1772 This->pCurrentConfig->Ns = NULL;
1773
1774 iCount = SendMessageW(hDlgCtrl, LB_GETCOUNT, 0, 0);
1775 if (!iCount || iCount == LB_ERR)
1776 {
1777 return;
1778 }
1779
1780 pLast = NULL;
1781 for(iIndex = 0; iIndex < iCount; iIndex++)
1782 {
1783 if (SendMessageW(hDlgCtrl, LB_GETTEXT, iIndex, (LPARAM)Ip) == LB_ERR)
1784 break;
1785
1786 pCur = CoTaskMemAlloc(sizeof(IP_ADDR));
1787 if (!pCur)
1788 break;
1789 ZeroMemory(pCur, sizeof(IP_ADDR));
1790 pCur->IpAddress = GetIpAddressFromStringW(Ip);
1791
1792 if (!pLast)
1793 This->pCurrentConfig->Ns = pCur;
1794 else
1795 pLast->Next = pCur;
1796
1797 pLast = pCur;
1798 pCur = pCur->Next;
1799 }
1800 This->pCurrentConfig->AutoconfigActive = FALSE;
1801}
struct _SINGLE_LIST_ENTRY * Next
Definition: ntbasedef.h:629
VOID FreeIPAddr(IP_ADDR *pAddr)

Referenced by TcpipAdvancedDnsDlg().

◆ StoreIPSettings()

VOID StoreIPSettings ( HWND  hDlgCtrl,
TcpipConfNotifyImpl This,
BOOL  bSubmask 
)

Definition at line 1204 of file tcpipconf_notify.c.

1208{
1209 WCHAR szBuffer[30];
1210
1211 INT iIndex, iCount;
1212 IP_ADDR *pCur, *pLast;
1213
1214 iCount = ListView_GetItemCount(hDlgCtrl);
1215 if (!iCount)
1216 {
1217 return;
1218 }
1219
1220 pLast = NULL;
1221 for(iIndex = 0; iIndex < iCount; iIndex++)
1222 {
1223 if (GetListViewItem(hDlgCtrl, iIndex, 0, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
1224 {
1225 pCur = (IP_ADDR*)CoTaskMemAlloc(sizeof(IP_ADDR));
1226 if (!pCur)
1227 break;
1228 ZeroMemory(pCur, sizeof(IP_ADDR));
1229
1230 szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
1231 pCur->IpAddress = GetIpAddressFromStringW(szBuffer);
1232
1233 if (GetListViewItem(hDlgCtrl, iIndex, 1, szBuffer, sizeof(szBuffer)/sizeof(WCHAR) ))
1234 {
1235 szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
1236 if (bSubmask)
1237 pCur->u.Subnetmask = GetIpAddressFromStringW(szBuffer);
1238 else
1239 pCur->u.Metric = _wtoi(szBuffer);
1240 }
1241
1242 if (!pLast)
1243 {
1244 if (bSubmask)
1245 This->pCurrentConfig->Ip = pCur;
1246 else
1247 This->pCurrentConfig->Gw = pCur;
1248 }
1249 else
1250 {
1251 pLast->Next = pCur;
1252 }
1253
1254 pLast = pCur;
1255 }
1256 }
1257}
BOOL GetListViewItem(HWND hDlgCtrl, UINT Index, UINT SubIndex, WCHAR *szBuffer, UINT BufferSize)

Referenced by TcpipAdvancedIpDlg().

◆ StoreTcpipBasicSettings()

INT_PTR StoreTcpipBasicSettings ( HWND  hwndDlg,
TcpipConfNotifyImpl This,
BOOL  bApply 
)

Definition at line 2170 of file tcpipconf_notify.c.

2174{
2175 DWORD dwIpAddr;
2176
2177 if (SendDlgItemMessageW(hwndDlg, IDC_NODHCP, BM_GETCHECK, 0, 0) == BST_CHECKED)
2178 {
2179 This->pCurrentConfig->DhcpEnabled = FALSE;
2180 if (SendDlgItemMessageW(hwndDlg, IDC_IPADDR, IPM_GETADDRESS, 0, (LPARAM)&dwIpAddr) != 4)
2181 {
2182 if (bApply)
2183 {
2185 SetFocus(GetDlgItem(hwndDlg, IDC_IPADDR));
2186 return E_FAIL;
2187 }
2188 }
2189 if (!This->pCurrentConfig->Ip)
2190 {
2191 This->pCurrentConfig->Ip = (IP_ADDR*)CoTaskMemAlloc(sizeof(IP_ADDR));
2192 if (!This->pCurrentConfig->Ip)
2193 return E_OUTOFMEMORY;
2194 ZeroMemory(This->pCurrentConfig->Ip, sizeof(IP_ADDR));
2195 }
2196 This->pCurrentConfig->Ip->IpAddress = dwIpAddr;
2197
2198 if (SendDlgItemMessageW(hwndDlg, IDC_SUBNETMASK, IPM_GETADDRESS, 0, (LPARAM)&dwIpAddr) != 4)
2199 {
2200 if (bApply)
2202 if (SendDlgItemMessageW(hwndDlg, IDC_IPADDR, IPM_GETADDRESS, 0, (LPARAM)&dwIpAddr) == 4)
2203 {
2204 if (dwIpAddr <= MAKEIPADDRESS(127, 255, 255, 255))
2205 dwIpAddr = MAKEIPADDRESS(255, 0, 0, 0);
2206 else if (dwIpAddr <= MAKEIPADDRESS(191, 255, 255, 255))
2207 dwIpAddr = MAKEIPADDRESS(255, 255, 0, 0);
2208 else if (dwIpAddr <= MAKEIPADDRESS(223, 255, 255, 255))
2209 dwIpAddr = MAKEIPADDRESS(255, 255, 255, 0);
2210
2212 }
2213 if (bApply)
2214 {
2216 return E_FAIL;
2217 }
2218 }
2219 /* store subnetmask */
2220 This->pCurrentConfig->Ip->u.Subnetmask = dwIpAddr;
2221 }
2222 else
2223 {
2224 This->pCurrentConfig->DhcpEnabled = TRUE;
2225 }
2226
2227 if (SendDlgItemMessageW(hwndDlg, IDC_DEFGATEWAY, IPM_GETADDRESS, 0, (LPARAM)&dwIpAddr) == 4)
2228 {
2229 if (!This->pCurrentConfig->Gw)
2230 {
2231 This->pCurrentConfig->Gw = (IP_ADDR*)CoTaskMemAlloc(sizeof(IP_ADDR));
2232 if (!This->pCurrentConfig->Gw)
2233 return E_OUTOFMEMORY;
2234 ZeroMemory(This->pCurrentConfig->Gw, sizeof(IP_ADDR));
2235 }
2236 /* store default gateway */
2237 This->pCurrentConfig->Gw->IpAddress = dwIpAddr;
2238 }
2239 else
2240 {
2241 if (This->pCurrentConfig->Gw)
2242 {
2243 IP_ADDR * pNextGw = This->pCurrentConfig->Gw->Next;
2244 CoTaskMemFree(This->pCurrentConfig->Gw);
2245 This->pCurrentConfig->Gw = pNextGw;
2246 }
2247 }
2248
2250 {
2251 BOOL bSkip = FALSE;
2252 This->pCurrentConfig->AutoconfigActive = FALSE;
2253 if (SendDlgItemMessageW(hwndDlg, IDC_DNS1, IPM_GETADDRESS, 0, (LPARAM)&dwIpAddr) == 4)
2254 {
2255 if (!This->pCurrentConfig->Ns)
2256 {
2257 This->pCurrentConfig->Ns = (IP_ADDR*)CoTaskMemAlloc(sizeof(IP_ADDR));
2258 if (!This->pCurrentConfig->Ns)
2259 return E_OUTOFMEMORY;
2260 ZeroMemory(This->pCurrentConfig->Ns, sizeof(IP_ADDR));
2261 }
2262 This->pCurrentConfig->Ns->IpAddress = dwIpAddr;
2263 }
2264 else if (This->pCurrentConfig->Ns)
2265 {
2266 IP_ADDR *pTemp = This->pCurrentConfig->Ns->Next;
2267
2268 CoTaskMemFree(This->pCurrentConfig->Ns);
2269 This->pCurrentConfig->Ns = pTemp;
2270 bSkip = TRUE;
2271 }
2272
2273
2274 if (SendDlgItemMessageW(hwndDlg, IDC_DNS2, IPM_GETADDRESS, 0, (LPARAM)&dwIpAddr) == 4)
2275 {
2276 if (!This->pCurrentConfig->Ns || bSkip)
2277 {
2278 if (!This->pCurrentConfig->Ns)
2279 {
2280 This->pCurrentConfig->Ns = (IP_ADDR*)CoTaskMemAlloc(sizeof(IP_ADDR));
2281 if (!This->pCurrentConfig->Ns)
2282 return E_OUTOFMEMORY;
2283 ZeroMemory(This->pCurrentConfig->Ns, sizeof(IP_ADDR));
2284 }
2285 This->pCurrentConfig->Ns->IpAddress = dwIpAddr;
2286 }
2287 else if (!This->pCurrentConfig->Ns->Next)
2288 {
2289 This->pCurrentConfig->Ns->Next = (IP_ADDR*)CoTaskMemAlloc(sizeof(IP_ADDR));
2290 if (!This->pCurrentConfig->Ns->Next)
2291 return E_OUTOFMEMORY;
2292 ZeroMemory(This->pCurrentConfig->Ns->Next, sizeof(IP_ADDR));
2293 This->pCurrentConfig->Ns->Next->IpAddress = dwIpAddr;
2294 }
2295 else
2296 {
2297 This->pCurrentConfig->Ns->Next->IpAddress = dwIpAddr;
2298 }
2299 }
2300 else
2301 {
2302 if (This->pCurrentConfig->Ns && This->pCurrentConfig->Ns->Next)
2303 {
2304 if (This->pCurrentConfig->Ns->Next->Next)
2305 {
2306 IP_ADDR *pTemp = This->pCurrentConfig->Ns->Next->Next;
2307 CoTaskMemFree(This->pCurrentConfig->Ns->Next);
2308 This->pCurrentConfig->Ns->Next = pTemp;
2309 }
2310 else
2311 {
2312 CoTaskMemFree(This->pCurrentConfig->Ns->Next);
2313 This->pCurrentConfig->Ns->Next = NULL;
2314 }
2315 }
2316 }
2317 }
2318 else
2319 {
2320 This->pCurrentConfig->AutoconfigActive = TRUE;
2321 }
2322 return S_OK;
2323}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define IDS_NO_SUBMASK_SET
Definition: resource.h:100
#define IDS_NO_IPADDR_SET
Definition: resource.h:99
#define MAKEIPADDRESS(b1, b2, b3, b4)
Definition: commctrl.h:4486
#define IPM_GETADDRESS
Definition: commctrl.h:4467
#define BM_GETCHECK
Definition: winuser.h:1908

Referenced by LaunchAdvancedTcpipSettings(), and TcpipBasicDlg().

◆ StoreTcpipFilterSettings()

TcpFilterSettings * StoreTcpipFilterSettings ( HWND  hwndDlg)

Definition at line 315 of file tcpipconf_notify.c.

317{
318 TcpFilterSettings * pFilter;
319
320 pFilter = CoTaskMemAlloc(sizeof(TcpFilterSettings));
321 if (!pFilter)
322 return NULL;
323
325 pFilter->EnableSecurityFilters = TRUE;
326 else
327 pFilter->EnableSecurityFilters = FALSE;
328
329 pFilter->szTCPAllowedPorts = CreateFilterList(GetDlgItem(hwndDlg, IDC_TCP_LIST), &pFilter->TCPSize);
330 pFilter->szUDPAllowedPorts = CreateFilterList(GetDlgItem(hwndDlg, IDC_UDP_LIST), &pFilter->UDPSize);
332
333 return pFilter;
334}
#define IDC_USE_FILTER
Definition: resource.h:86
#define IDC_IP_LIST
Definition: resource.h:83
#define IDC_UDP_LIST
Definition: resource.h:78
#define IDC_TCP_LIST
Definition: resource.h:73
LPWSTR CreateFilterList(HWND hDlgCtrl, LPDWORD Size)

Referenced by TcpipFilterSettingsDlg().

◆ TcpipAddDNSDlg()

INT_PTR CALLBACK TcpipAddDNSDlg ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 1484 of file tcpipconf_notify.c.

1490{
1491 TcpipDnsSettings * pSettings;
1492 WCHAR szBuffer[100];
1493 DWORD dwIpAddr;
1494 LPNMIPADDRESS lpnmipa;
1495
1496 switch(uMsg)
1497 {
1498 case WM_INITDIALOG:
1499 pSettings = (TcpipDnsSettings*)lParam;
1501 if (!pSettings->bAdd)
1502 {
1503 if (LoadStringW(netcfgx_hInstance, IDS_MOD, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
1504 {
1505 szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
1506 SendDlgItemMessageW(hwndDlg, IDC_OK, WM_SETTEXT, 0, (LPARAM)szBuffer);
1507 }
1508 SendDlgItemMessageW(hwndDlg, IDC_IPADDR, WM_SETTEXT, 0, (LPARAM)pSettings->szIP);
1509 EnableWindow(GetDlgItem(hwndDlg, IDC_OK), TRUE);
1510 }
1511 else
1512 {
1513 if (LoadStringW(netcfgx_hInstance, IDS_ADD, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
1514 {
1515 szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
1516 SendDlgItemMessageW(hwndDlg, IDC_OK, WM_SETTEXT, 0, (LPARAM)szBuffer);
1517 }
1518 EnableWindow(GetDlgItem(hwndDlg, IDC_OK), FALSE);
1519 }
1520 return TRUE;
1521 case WM_COMMAND:
1522 if (LOWORD(wParam) == IDCANCEL)
1523 {
1524 EndDialog(hwndDlg, FALSE);
1525 break;
1526 }
1527 else if (LOWORD(wParam) == IDC_OK)
1528 {
1529 pSettings = (TcpipDnsSettings*)GetWindowLongPtr(hwndDlg, DWLP_USER);
1530 SendDlgItemMessageW(hwndDlg, IDC_IPADDR, WM_GETTEXT, 16, (LPARAM)pSettings->szIP);
1531 if (SendMessageW(pSettings->hDlgCtrl, LB_FINDSTRING, 0, (LPARAM)pSettings->szIP) == LB_ERR)
1532 {
1533 if (pSettings->bAdd)
1534 SendMessageW(pSettings->hDlgCtrl, LB_ADDSTRING, 0, (LPARAM)pSettings->szIP);
1535 EndDialog(hwndDlg, TRUE);
1536 break;
1537 }
1538 if (!pSettings->bAdd)
1539 {
1540 EndDialog(hwndDlg, FALSE);
1541 break;
1542 }
1544 break;
1545 }
1546 break;
1547 case WM_NOTIFY:
1548 lpnmipa = (LPNMIPADDRESS) lParam;
1549 if (lpnmipa->hdr.code == IPN_FIELDCHANGED)
1550 {
1551 if (lpnmipa->hdr.idFrom == IDC_IPADDR)
1552 {
1553 if (SendDlgItemMessageW(hwndDlg, IDC_IPADDR, IPM_GETADDRESS, 0, (LPARAM)&dwIpAddr) == 4)
1554 EnableWindow(GetDlgItem(hwndDlg, IDC_OK), TRUE);
1555 }
1556 }
1557 break;
1558 }
1559 return FALSE;
1560}
#define IDC_OK
Definition: resource.h:59
WPARAM wParam
Definition: combotst.c:138
#define IDS_ADD
Definition: resource.h:111
#define IDS_MOD
Definition: resource.h:112
#define IDS_DUP_SUFFIX
Definition: resource.h:123
#define LOWORD(l)
Definition: pedump.c:82
struct tagNMIPADDRESS * LPNMIPADDRESS
#define IPN_FIELDCHANGED
Definition: commctrl.h:4477
#define WM_NOTIFY
Definition: richedit.h:61
UINT_PTR idFrom
Definition: winuser.h:3148
UINT code
Definition: winuser.h:3149
#define GetWindowLongPtr
Definition: treelist.c:73
#define IDCANCEL
Definition: winuser.h:825
#define WM_COMMAND
Definition: winuser.h:1730
#define WM_GETTEXT
Definition: winuser.h:1608
#define WM_INITDIALOG
Definition: winuser.h:1729
#define MB_ICONERROR
Definition: winuser.h:781
#define LB_FINDSTRING
Definition: winuser.h:2024
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)

Referenced by TcpipAdvancedDnsDlg().

◆ TcpipAddIpDlg()

INT_PTR CALLBACK TcpipAddIpDlg ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 871 of file tcpipconf_notify.c.

877{
878 LPNMIPADDRESS lpnmipa;
879 DWORD dwIpAddr;
880 TcpipIpSettings *pIpSettings;
881 WCHAR szBuffer[50];
883 LRESULT lResult;
884
885 switch(uMsg)
886 {
887 case WM_INITDIALOG:
888 pIpSettings = (TcpipIpSettings*)lParam;
890
899
900 if (pIpSettings->bAdd)
901 {
902 if (LoadStringW(netcfgx_hInstance, IDS_ADD, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
903 {
904 szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
905 SendDlgItemMessageW(hwndDlg, IDC_OK, WM_SETTEXT, 0, (LPARAM)szBuffer);
906 }
908 }
909 else
910 {
911 if (LoadStringW(netcfgx_hInstance, IDS_MOD, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
912 {
913 szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
914 SendDlgItemMessageW(hwndDlg, IDC_OK, WM_SETTEXT, 0, (LPARAM)szBuffer);
915 }
916
919 }
920 return TRUE;
921 case WM_NOTIFY:
922 lpnmipa = (LPNMIPADDRESS) lParam;
923 if (lpnmipa->hdr.code == IPN_FIELDCHANGED)
924 {
925 if (lpnmipa->hdr.idFrom == IDC_IPADDR)
926 {
927 if (SendDlgItemMessageW(hwndDlg, IDC_IPADDR, IPM_GETADDRESS, 0, (LPARAM)&dwIpAddr) == 4)
928 {
929 if (dwIpAddr <= MAKEIPADDRESS(127, 255, 255, 255))
931 else if (dwIpAddr <= MAKEIPADDRESS(191, 255, 255, 255))
933 else if (dwIpAddr <= MAKEIPADDRESS(223, 255, 255, 255))
934 SendDlgItemMessageW(hwndDlg, IDC_SUBNETMASK, IPM_SETADDRESS, 0, (LPARAM)MAKEIPADDRESS(255, 255, 255, 0));
936 }
937 }
938 }
939 break;
940 case WM_COMMAND:
941 if (LOWORD(wParam) == IDC_OK)
942 {
943 pIpSettings = (TcpipIpSettings*)GetWindowLongPtr(hwndDlg, DWLP_USER);
944 SendDlgItemMessageW(hwndDlg, IDC_IPADDR, WM_GETTEXT, 16, (LPARAM)pIpSettings->szIP);
945 SendDlgItemMessageW(hwndDlg, IDC_SUBNETMASK, WM_GETTEXT, 16, (LPARAM)pIpSettings->szMask);
946
947 ZeroMemory(&find, sizeof(LVFINDINFOW));
948 find.flags = LVFI_STRING;
949 find.psz = pIpSettings->szIP;
950 lResult = SendMessageW(pIpSettings->hDlgCtrl, LVM_FINDITEMW, (WPARAM)-1, (LPARAM)&find);
951
952 if (lResult == -1)
953 {
954 EndDialog(hwndDlg, TRUE);
955 break;
956 }
957 else if (!pIpSettings->bAdd)
958 {
959 EndDialog(hwndDlg, FALSE);
960 break;
961 }
963 break;
964 }
965 else if (LOWORD(wParam) == IDCANCEL)
966 {
967 EndDialog(hwndDlg, FALSE);
968 }
969 break;
970 }
971 return FALSE;
972}
static TAGID TAGID find
Definition: db.cpp:155
#define IDS_DUP_IPADDR
Definition: resource.h:124
#define LVFI_STRING
Definition: commctrl.h:2437
#define LVM_FINDITEMW
Definition: commctrl.h:2466

Referenced by TcpipAdvancedIpDlg().

◆ TcpipAddSuffixDlg()

INT_PTR CALLBACK TcpipAddSuffixDlg ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 990 of file tcpipconf_notify.c.

996{
997 WCHAR szBuffer[100];
998 TcpipSuffixSettings * pSettings;
999 LRESULT lLength;
1000
1001 switch(uMsg)
1002 {
1003 case WM_INITDIALOG:
1004 pSettings = (TcpipSuffixSettings*)lParam;
1005 if (!pSettings->bAdd)
1006 {
1007 SendDlgItemMessageW(hwndDlg, IDC_SUFFIX, WM_SETTEXT, 0, (LPARAM)pSettings->Suffix);
1008 if (LoadStringW(netcfgx_hInstance, IDS_MOD, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
1009 {
1010 szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
1011 SendDlgItemMessageW(hwndDlg, IDC_OK, WM_SETTEXT, 0, (LPARAM)szBuffer);
1012 }
1013 CoTaskMemFree(pSettings->Suffix);
1014 pSettings->Suffix = NULL;
1015 }
1016 else
1017 {
1018 if (LoadStringW(netcfgx_hInstance, IDS_ADD, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
1019 {
1020 szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
1021 SendDlgItemMessageW(hwndDlg, IDC_OK, WM_SETTEXT, 0, (LPARAM)szBuffer);
1022 }
1023 }
1024 SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pSettings);
1025 return TRUE;
1026 case WM_COMMAND:
1027 if (LOWORD(wParam) == IDCANCEL)
1028 {
1029 EndDialog(hwndDlg, FALSE);
1030 break;
1031 }
1032 else if (LOWORD(wParam) == IDC_OK)
1033 {
1034 lLength = SendDlgItemMessageW(hwndDlg, IDC_SUFFIX, WM_GETTEXTLENGTH, 0, 0);
1035 if (lLength)
1036 {
1037 pSettings = (TcpipSuffixSettings*) GetWindowLongPtr(hwndDlg, DWLP_USER);
1038 pSettings->Suffix = (LPWSTR)CoTaskMemAlloc((lLength + 1)* sizeof(WCHAR));
1039 if (pSettings->Suffix)
1040 {
1041 SendDlgItemMessageW(hwndDlg, IDC_SUFFIX, WM_GETTEXT, lLength + 1, (LPARAM)pSettings->Suffix);
1042 if (SendMessageW(pSettings->hDlgCtrl, LB_FINDSTRING, 0, (LPARAM)pSettings->Suffix) != LB_ERR)
1043 {
1045 CoTaskMemFree(pSettings->Suffix);
1046 break;
1047 }
1048
1049 if (!VerifyDNSSuffix(pSettings->Suffix))
1050 {
1052 CoTaskMemFree(pSettings->Suffix);
1053 break;
1054 }
1055 EndDialog(hwndDlg, TRUE);
1056 }
1057 }
1058 break;
1059 }
1060 }
1061 return FALSE;
1062}
#define IDS_DOMAIN_SUFFIX
Definition: resource.h:121
BOOL VerifyDNSSuffix(LPWSTR szName)
#define WM_GETTEXTLENGTH
Definition: winuser.h:1609

Referenced by TcpipAdvancedDnsDlg().

◆ TcpipAdvancedDnsDlg()

INT_PTR CALLBACK TcpipAdvancedDnsDlg ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 1805 of file tcpipconf_notify.c.

1811{
1814 TcpipDnsSettings Dns;
1815 LRESULT lIndex, lLength;
1816 TcpipSuffixSettings Suffix;
1817 LPPSHNOTIFY lppsn;
1818 WCHAR szSuffix[100];
1819 WCHAR szFormat[200];
1820 WCHAR szBuffer[300];
1821
1822
1823 switch(uMsg)
1824 {
1825 case WM_INITDIALOG:
1827 This = (TcpipConfNotifyImpl*)page->lParam;
1832 return TRUE;
1833 case WM_NOTIFY:
1834 lppsn = (LPPSHNOTIFY) lParam;
1835 if (lppsn->hdr.code == PSN_KILLACTIVE)
1836 {
1837 if (SendDlgItemMessageW(hwndDlg, IDC_SELSUFFIX, BM_GETCHECK, 0, 0) == BST_CHECKED &&
1839 {
1842 return TRUE;
1843 }
1844 if (SendDlgItemMessageW(hwndDlg, IDC_SUFFIX, WM_GETTEXT, sizeof(szSuffix)/sizeof(WCHAR), (LPARAM)szSuffix))
1845 {
1846 szSuffix[(sizeof(szSuffix)/sizeof(WCHAR))-1] = L'\0';
1847 if (VerifyDNSSuffix(szSuffix) == FALSE)
1848 {
1849 if (LoadStringW(netcfgx_hInstance, IDS_DNS_SUFFIX, szFormat, sizeof(szFormat)/sizeof(WCHAR)))
1850 {
1851 szFormat[(sizeof(szFormat)/sizeof(WCHAR))-1] = L'\0';
1852 swprintf(szBuffer, szFormat, szSuffix);
1853 if (LoadStringW(netcfgx_hInstance, IDS_TCPIP, szFormat, sizeof(szFormat)/sizeof(WCHAR)))
1854 szFormat[(sizeof(szFormat)/sizeof(WCHAR))-1] = L'\0';
1855 else
1856 szFormat[0] = L'\0';
1857
1858 MessageBoxW(hwndDlg, szBuffer, szFormat, MB_ICONWARNING);
1860 SetFocus(GetDlgItem(hwndDlg, IDC_SUFFIX));
1861 return TRUE;
1862 }
1863 }
1864 }
1865 }
1866 else if (lppsn->hdr.code == PSN_APPLY)
1867 {
1869 if (!This->pCurrentConfig->pDNS)
1870 break;
1871
1874 {
1875 CoTaskMemFree(This->pCurrentConfig->pDNS->szSearchList);
1876 This->pCurrentConfig->pDNS->szSearchList = NULL;
1878 This->pCurrentConfig->pDNS->UseDomainNameDevolution = TRUE;
1879 else
1880 This->pCurrentConfig->pDNS->UseDomainNameDevolution = FALSE;
1881 }
1882 else
1883 {
1884 CoTaskMemFree(This->pCurrentConfig->pDNS->szSearchList);
1885 This->pCurrentConfig->pDNS->szSearchList = NULL;
1886 This->pCurrentConfig->pDNS->UseDomainNameDevolution = FALSE;
1887 This->pCurrentConfig->pDNS->szSearchList = GetListViewEntries(GetDlgItem(hwndDlg, IDC_DNSSUFFIXLIST));
1888 }
1889
1891 {
1892 This->pCurrentConfig->pDNS->RegisterAdapterName = TRUE;
1894 This->pCurrentConfig->pDNS->RegistrationEnabled = TRUE;
1895 else
1896 This->pCurrentConfig->pDNS->RegistrationEnabled = FALSE;
1897 }
1898 else
1899 {
1900 This->pCurrentConfig->pDNS->RegisterAdapterName = FALSE;
1901 This->pCurrentConfig->pDNS->RegistrationEnabled = FALSE;
1902 }
1903 }
1904 break;
1905 case WM_COMMAND:
1907 {
1909 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
1910 break;
1911 }
1913 {
1915 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
1916 break;
1917 }
1918 else if (LOWORD(wParam) == IDC_PRIMSUFFIX && HIWORD(wParam) == BN_CLICKED)
1919 {
1921 {
1929 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
1930 }
1931 }
1932 else if (LOWORD(wParam) == IDC_SELSUFFIX && HIWORD(wParam) == BN_CLICKED)
1933 {
1935 {
1939 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
1940 }
1941 break;
1942 }
1943 else if (LOWORD(wParam) == IDC_REGSUFFIX && HIWORD(wParam) == BN_CLICKED)
1944 {
1947 else
1949 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
1950 }
1951 else if (LOWORD(wParam) == IDC_DNSADDRUP && HIWORD(wParam) == BN_CLICKED)
1952 {
1953 MoveItem(GetDlgItem(hwndDlg, IDC_DNSADDRLIST), -1);
1956 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
1957 break;
1958 }
1960 {
1961 MoveItem(GetDlgItem(hwndDlg, IDC_DNSADDRLIST), 1);
1964 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
1965 break;
1966 }
1968 {
1969 MoveItem(GetDlgItem(hwndDlg, IDC_DNSSUFFIXLIST), -1);
1972 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
1973 break;
1974 }
1976 {
1980 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
1981 break;
1982 }
1983 else if (LOWORD(wParam) == IDC_DNSADDRDEL && HIWORD(wParam) == BN_CLICKED)
1984 {
1988 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
1989 break;
1990 }
1992 {
1996 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
1997 break;
1998 }
1999 else if (LOWORD(wParam) == IDC_DNSADDRADD && HIWORD(wParam) == BN_CLICKED)
2000 {
2001 Dns.bAdd = TRUE;
2002 Dns.hDlgCtrl = GetDlgItem(hwndDlg, IDC_DNSADDRLIST);
2004 {
2006 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
2007 }
2008 break;
2009 }
2010 else if (LOWORD(wParam) == IDC_DNSADDRMOD && HIWORD(wParam) == BN_CLICKED)
2011 {
2012 lIndex = SendDlgItemMessage(hwndDlg, IDC_DNSADDRLIST, LB_GETCURSEL, 0, 0);
2013 if (lIndex != LB_ERR)
2014 {
2015 Dns.bAdd = FALSE;
2016 Dns.hDlgCtrl = GetDlgItem(hwndDlg, IDC_DNSADDRLIST);
2017 SendDlgItemMessageW(hwndDlg, IDC_DNSADDRLIST, LB_GETTEXT, (WPARAM)lIndex, (LPARAM)Dns.szIP);
2019 {
2021 SendDlgItemMessageW(hwndDlg, IDC_DNSADDRLIST, LB_INSERTSTRING, lIndex, (LPARAM)Dns.szIP);
2022 SendDlgItemMessageW(hwndDlg, IDC_DNSADDRLIST, LB_SETCURSEL, lIndex, 0);
2024 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
2025 }
2026 }
2027 break;
2028 }
2030 {
2031 Suffix.bAdd = TRUE;
2032 Suffix.hDlgCtrl = GetDlgItem(hwndDlg, IDC_DNSSUFFIXLIST);
2033 Suffix.Suffix = NULL;
2035 {
2037 lIndex = SendDlgItemMessageW(hwndDlg, IDC_DNSSUFFIXLIST, LB_ADDSTRING, 0, (LPARAM)Suffix.Suffix);
2038 if (lIndex != LB_ERR)
2041 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
2042 CoTaskMemFree(Suffix.Suffix);
2043 }
2044 break;
2045 }
2047 {
2048 lIndex = SendDlgItemMessage(hwndDlg, IDC_DNSSUFFIXLIST, LB_GETCURSEL, 0, 0);
2049 if (lIndex != LB_ERR)
2050 {
2051 Suffix.bAdd = FALSE;
2052 Suffix.hDlgCtrl = GetDlgItem(hwndDlg, IDC_DNSSUFFIXLIST);
2053 lLength = SendMessageW(Suffix.hDlgCtrl, LB_GETTEXTLEN, lIndex, 0);
2054 if (lLength != LB_ERR)
2055 {
2056 Suffix.Suffix = (LPWSTR)CoTaskMemAlloc((lLength + 1) * sizeof(WCHAR));
2057 if (Suffix.Suffix)
2058 {
2059 SendMessageW(Suffix.hDlgCtrl, LB_GETTEXT, lIndex, (LPARAM)Suffix.Suffix);
2060 Suffix.Suffix[lLength] = L'\0';
2062 {
2063 if (Suffix.Suffix)
2064 {
2066 SendDlgItemMessageW(hwndDlg, IDC_DNSSUFFIXLIST, LB_INSERTSTRING, lIndex, (LPARAM)Suffix.Suffix);
2069 CoTaskMemFree(Suffix.Suffix);
2070 }
2072 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
2073 }
2074 }
2075 }
2076 }
2077 break;
2078 }
2079 }
2080 return FALSE;
2081}
#define IDC_DNSADDRMOD
Definition: resource.h:52
#define IDC_DNSSUFFIXUP
Definition: resource.h:58
#define IDC_DNSSUFFIXDEL
Definition: resource.h:62
#define IDC_DNSSUFFIXDOWN
Definition: resource.h:59
#define IDD_TCPIPDNS_DLG
Definition: resource.h:16
#define IDC_DNSADDRADD
Definition: resource.h:51
#define IDC_DNSADDRDEL
Definition: resource.h:53
#define IDC_DNSADDRUP
Definition: resource.h:49
#define IDS_NO_SUFFIX
Definition: resource.h:120
#define IDD_TCPIPSUFFIX_DLG
Definition: resource.h:17
#define IDC_DNSADDRDOWN
Definition: resource.h:50
#define IDS_DNS_SUFFIX
Definition: resource.h:122
#define IDC_DNSSUFFIXMOD
Definition: resource.h:61
#define PSN_KILLACTIVE
Definition: prsht.h:116
#define PSN_APPLY
Definition: prsht.h:117
#define LPPROPSHEETPAGE
Definition: prsht.h:390
struct _PSHNOTIFY * LPPSHNOTIFY
NMHDR hdr
Definition: prsht.h:330
Definition: module.h:576
VOID MoveItem(HWND hDlgCtrl, INT pos)
VOID RemoveItem(HWND hDlgCtrl)
INT_PTR CALLBACK TcpipAddSuffixDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
VOID InitializeTcpipAdvancedDNSDlg(HWND hwndDlg, TcpipConfNotifyImpl *This)
VOID StoreDNSSettings(HWND hDlgCtrl, TcpipConfNotifyImpl *This)
VOID ToggleUpDown(HWND hwndDlg, HWND hDlgCtrl, UINT UpButton, UINT DownButton, UINT ModButton, UINT DelButton)
INT_PTR CALLBACK TcpipAddDNSDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
LPWSTR GetListViewEntries(HWND hDlgCtrl)
#define HIWORD(l)
Definition: typedefs.h:247
#define LB_RESETCONTENT
Definition: winuser.h:2045
#define LBN_SELCHANGE
Definition: winuser.h:2065
#define DWLP_MSGRESULT
Definition: winuser.h:864
#define BN_CLICKED
Definition: winuser.h:1915
#define SendDlgItemMessage
Definition: winuser.h:5832

Referenced by LaunchAdvancedTcpipSettings().

◆ TcpipAdvancedIpDlg()

INT_PTR CALLBACK TcpipAdvancedIpDlg ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 1262 of file tcpipconf_notify.c.

1268{
1271 INT_PTR res;
1272 WCHAR szBuffer[200];
1273 LPPSHNOTIFY lppsn;
1275 TcpipIpSettings Ip;
1276
1277 LVITEMW li;
1278
1279 switch(uMsg)
1280 {
1281 case WM_INITDIALOG:
1283 This = (TcpipConfNotifyImpl*)page->lParam;
1286 return TRUE;
1287 case WM_NOTIFY:
1288 lppsn = (LPPSHNOTIFY) lParam;
1289 if (lppsn->hdr.code == LVN_ITEMCHANGED)
1290 {
1292 BOOL bEnable;
1293
1294 if (lplv->hdr.idFrom == IDC_IPLIST)
1295 {
1297
1298 bEnable = ((lplv->uNewState & LVIS_SELECTED) != 0) &&
1299 (!This->pCurrentConfig->DhcpEnabled);
1300
1303 }
1304 else if (lplv->hdr.idFrom == IDC_GWLIST)
1305 {
1306 bEnable = ((lplv->uNewState & LVIS_SELECTED) != 0);
1307
1310 }
1311 }
1312 else if (lppsn->hdr.code == PSN_KILLACTIVE)
1313 {
1315 if (!This->pCurrentConfig->DhcpEnabled && ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_IPLIST)) == 0)
1316 {
1319 return TRUE;
1320 }
1321 }
1322 else if (lppsn->hdr.code == PSN_APPLY)
1323 {
1325 FreeIPAddr(This->pCurrentConfig->Gw);
1326 This->pCurrentConfig->Gw = NULL;
1327 FreeIPAddr(This->pCurrentConfig->Ip);
1328 This->pCurrentConfig->Ip = NULL;
1332 return TRUE;
1333 }
1334 break;
1335 case WM_COMMAND:
1337 {
1340 else
1342 }
1343 else if (LOWORD(wParam) == IDC_IPADD)
1344 {
1345 Ip.bAdd = TRUE;
1346 Ip.hDlgCtrl = GetDlgItem(hwndDlg, IDC_IPLIST);
1348 if (res)
1349 {
1350 memset(&li, 0x0, sizeof(LVITEMW));
1351 li.mask = LVIF_TEXT | LVIF_PARAM;
1352 li.iItem = ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_IPLIST));
1353 li.pszText = Ip.szIP;
1354 li.iItem = SendDlgItemMessageW(hwndDlg, IDC_IPLIST, LVM_INSERTITEMW, 0, (LPARAM)&li);
1355 if (li.iItem != -1)
1356 {
1357 li.mask = LVIF_TEXT;
1358 li.iSubItem = 1;
1359 li.pszText = Ip.szMask;
1361 }
1362 }
1363 }
1364 else if (LOWORD(wParam) == IDC_IPMOD)
1365 {
1366 memset(&li, 0x0, sizeof(LVITEMW));
1367 li.iItem = GetSelectedItem(GetDlgItem(hwndDlg, IDC_IPLIST));
1368 if (li.iItem < 0)
1369 {
1370 /* no item selected */
1372 SetFocus(GetDlgItem(hwndDlg, IDC_IPLIST));
1373 break;
1374 }
1375 Ip.bAdd = FALSE;
1376 Ip.hDlgCtrl = GetDlgItem(hwndDlg, IDC_IPLIST);
1377 if (GetIPListEntry(GetDlgItem(hwndDlg, IDC_IPLIST), li.iItem, &Ip))
1378 {
1380 if (res)
1381 {
1382 li.mask = LVIF_TEXT;
1383 li.pszText = Ip.szIP;
1385 li.pszText = Ip.szMask;
1386 li.iSubItem = 1;
1388 }
1389 }
1390 }
1391 else if (LOWORD(wParam) == IDC_IPDEL)
1392 {
1394 break;
1395 }
1396 else if (LOWORD(wParam) == IDC_GWADD)
1397 {
1398 Gw.bAdd = TRUE;
1399 Gw.hDlgCtrl = GetDlgItem(hwndDlg, IDC_GWLIST);
1401 if (res)
1402 {
1403 memset(&li, 0x0, sizeof(LVITEMW));
1404 li.mask = LVIF_TEXT;
1405 li.iItem = ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_GWLIST));
1406 li.pszText = Gw.szIP;
1407 li.iItem = SendDlgItemMessageW(hwndDlg, IDC_GWLIST, LVM_INSERTITEMW, 0, (LPARAM)&li);
1408 if (li.iItem >= 0)
1409 {
1410 if (Gw.Metric)
1411 {
1412 swprintf(szBuffer, L"%u", Gw.Metric);
1413 li.iSubItem = 1;
1414 li.pszText = szBuffer;
1416 }
1417 else
1418 {
1419 if (LoadStringW(netcfgx_hInstance, IDS_AUTOMATIC, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
1420 {
1421 szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
1422 li.iSubItem = 1;
1423 li.pszText = szBuffer;
1425 }
1426 }
1427 }
1428 }
1429 break;
1430 }
1431 else if (LOWORD(wParam) == IDC_GWMOD)
1432 {
1433 memset(&li, 0x0, sizeof(LVITEMW));
1434 li.iItem = GetSelectedItem(GetDlgItem(hwndDlg, IDC_GWLIST));
1435 if (li.iItem < 0)
1436 {
1437 /* no item selected */
1439 SetFocus(GetDlgItem(hwndDlg, IDC_GWLIST));
1440 break;
1441 }
1442 if (GetGWListEntry(GetDlgItem(hwndDlg, IDC_GWLIST), li.iItem, &Gw))
1443 {
1444 Gw.bAdd = FALSE;
1445 Gw.hDlgCtrl = GetDlgItem(hwndDlg, IDC_GWLIST);
1447 if (res)
1448 {
1449 li.mask = LVIF_TEXT;
1450 li.pszText = Gw.szIP;
1452 if (Gw.Metric)
1453 {
1454 swprintf(szBuffer, L"%u", Gw.Metric);
1455 li.iSubItem = 1;
1456 li.pszText = szBuffer;
1458 }
1459 else
1460 {
1461 if (LoadStringW(netcfgx_hInstance, IDS_AUTOMATIC, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
1462 {
1463 szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
1464 li.iSubItem = 1;
1465 li.pszText = szBuffer;
1467 }
1468 }
1469 }
1470 }
1471 break;
1472 }
1473 else if (LOWORD(wParam) == IDC_GWDEL)
1474 {
1476 break;
1477 }
1478 }
1479 return FALSE;
1480}
#define IDC_GWADD
Definition: resource.h:39
#define IDD_TCPIPADDIP_DLG
Definition: resource.h:14
#define IDC_AUTOMETRIC
Definition: resource.h:42
#define IDD_TCPIPGW_DLG
Definition: resource.h:15
GLuint res
Definition: glext.h:9613
#define Gw
Definition: i386-dis.c:364
#define PSNRET_NOERROR
Definition: prsht.h:129
#define LVIF_PARAM
Definition: commctrl.h:2311
struct tagNMLISTVIEW * LPNMLISTVIEW
#define LVN_ITEMCHANGED
Definition: commctrl.h:3131
UINT uNewState
Definition: commctrl.h:3036
VOID InitializeTcpipAdvancedIpDlg(HWND hwndDlg, TcpipConfNotifyImpl *This)
VOID StoreIPSettings(HWND hDlgCtrl, TcpipConfNotifyImpl *This, BOOL bSubmask)
VOID DeleteItemFromList(HWND hDlgCtrl)
BOOL GetGWListEntry(HWND hDlgCtrl, INT Index, TcpipGwSettings *pGwSettings)
INT_PTR CALLBACK TcpipAddIpDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
BOOL GetIPListEntry(HWND hDlgCtrl, INT Index, TcpipIpSettings *pIpSettings)
INT_PTR CALLBACK TcpipAdvGwDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
_In_ BOOL bEnable
Definition: winddi.h:3426

Referenced by LaunchAdvancedTcpipSettings().

◆ TcpipAdvancedOptDlg()

INT_PTR CALLBACK TcpipAdvancedOptDlg ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 565 of file tcpipconf_notify.c.

571{
574
575 switch(uMsg)
576 {
577 case WM_INITDIALOG:
579 This = (TcpipConfNotifyImpl*)page->lParam;
581 return TRUE;
582 case WM_COMMAND:
583 if (LOWORD(wParam) == IDC_OPTPROP)
584 {
587 GetParent(hwndDlg),
590 break;
591 }
592 }
593 return FALSE;
594}
#define IDD_TCPIP_FILTER_DLG
Definition: resource.h:13
#define IDC_OPTPROP
Definition: resource.h:68
INT_PTR CALLBACK TcpipFilterSettingsDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
VOID InitializeTcpipAdvancedOptDlg(HWND hwndDlg, TcpipConfNotifyImpl *This)

Referenced by LaunchAdvancedTcpipSettings().

◆ TcpipAdvGwDlg()

INT_PTR CALLBACK TcpipAdvGwDlg ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 715 of file tcpipconf_notify.c.

721{
722 WCHAR szBuffer[70];
723 TcpipGwSettings *pGwSettings;
724 DWORD dwIpAddr;
725 LPNMIPADDRESS lpnmipa;
727
728 switch(uMsg)
729 {
730 case WM_INITDIALOG:
731 pGwSettings = (TcpipGwSettings *)lParam;
733
738
739 if (pGwSettings->bAdd)
740 {
741 if (LoadStringW(netcfgx_hInstance, IDS_ADD, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
742 {
743 szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
744 SendDlgItemMessageW(hwndDlg, IDC_OK, WM_SETTEXT, 0, (LPARAM)szBuffer);
745 }
748 }
749 else
750 {
751 if (LoadStringW(netcfgx_hInstance, IDS_MOD, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
752 {
753 szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
754 SendDlgItemMessageW(hwndDlg, IDC_OK, WM_SETTEXT, 0, (LPARAM)szBuffer);
755 }
756
758
759 if (pGwSettings->Metric)
760 {
761 SetDlgItemInt(hwndDlg, IDC_METRIC, pGwSettings->Metric, FALSE);
764 }
765 else
766 {
770 }
771 }
772 return TRUE;
773 case WM_COMMAND:
775 {
777 {
781 }
782 else
783 {
786 }
787 break;
788 }
789 else if (LOWORD(wParam) == IDCANCEL)
790 {
791 EndDialog(hwndDlg, FALSE);
792 break;
793 }
794 else if (LOWORD(wParam) == IDC_OK)
795 {
796 if (SendDlgItemMessageW(hwndDlg, IDC_IPADDR, IPM_GETADDRESS, 0, (LPARAM)&dwIpAddr) == 4)
797 {
798 pGwSettings = (TcpipGwSettings*)GetWindowLongPtr(hwndDlg, DWLP_USER);
799 SendDlgItemMessageW(hwndDlg, IDC_IPADDR, WM_GETTEXT, 16, (LPARAM)pGwSettings->szIP);
800
801 ZeroMemory(&find, sizeof(LVFINDINFOW));
802 find.flags = LVFI_STRING;
803 find.psz = pGwSettings->szIP;
804
806 pGwSettings->Metric = GetDlgItemInt(hwndDlg, IDC_METRIC, NULL, FALSE);
807 else
808 pGwSettings->Metric = 0;
809
810
811 if (SendMessageW(pGwSettings->hDlgCtrl, LVM_FINDITEMW, (WPARAM)-1, (LPARAM)&find) == -1)
812 {
813 EndDialog(hwndDlg, TRUE);
814 break;
815 }
816 if (!pGwSettings->bAdd)
817 {
818 EndDialog(hwndDlg, FALSE);
819 break;
820 }
822 }
823 break;
824 }
825 break;
826 case WM_NOTIFY:
827 lpnmipa = (LPNMIPADDRESS) lParam;
828 if (lpnmipa->hdr.code == IPN_FIELDCHANGED)
829 {
830 if (lpnmipa->hdr.idFrom == IDC_IPADDR)
831 {
832 if (SendDlgItemMessageW(hwndDlg, IDC_IPADDR, IPM_GETADDRESS, 0, (LPARAM)&dwIpAddr) == 4)
834 }
835 }
836 break;
837 }
838 return FALSE;
839}
#define IDS_DUP_GW
Definition: resource.h:125
#define IDC_USEMETRIC
Definition: resource.h:45
#define IDC_METRICTXT
Definition: resource.h:44
#define BST_UNCHECKED
Definition: winuser.h:199
BOOL WINAPI SetDlgItemInt(_In_ HWND, _In_ int, _In_ UINT, _In_ BOOL)
UINT WINAPI GetDlgItemInt(_In_ HWND, _In_ int, _Out_opt_ PBOOL, _In_ BOOL)

Referenced by TcpipAdvancedIpDlg().

◆ TcpipAltConfDlg()

INT_PTR CALLBACK TcpipAltConfDlg ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 2141 of file tcpipconf_notify.c.

2146{
2147 switch(uMsg)
2148 {
2149 case WM_INITDIALOG:
2150 return TRUE;
2151 }
2152 return FALSE;
2153}

Referenced by AddAlternativeDialog(), and INetCfgComponentPropertyUi_fnMergePropPages().

◆ TcpipBasicDlg()

INT_PTR CALLBACK TcpipBasicDlg ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 2474 of file tcpipconf_notify.c.

2480{
2483 LPNMIPADDRESS lpnmipa;
2484 LPPSHNOTIFY lppsn;
2485 DWORD dwIpAddr;
2486
2487
2488 switch(uMsg)
2489 {
2490 case WM_INITDIALOG:
2492 This = (TcpipConfNotifyImpl*)page->lParam;
2493 if (This->pCurrentConfig)
2494 InitializeTcpipBasicDlgCtrls(hwndDlg, This->pCurrentConfig);
2496 return TRUE;
2497 case WM_NOTIFY:
2498 lppsn = (LPPSHNOTIFY) lParam;
2499 lpnmipa = (LPNMIPADDRESS) lParam;
2500 if (lpnmipa->hdr.code == IPN_FIELDCHANGED)
2501 {
2502 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
2503 if (lpnmipa->hdr.idFrom == IDC_IPADDR)
2504 {
2505 if (SendDlgItemMessageW(hwndDlg, IDC_IPADDR, IPM_GETADDRESS, 0, (LPARAM)&dwIpAddr) == 4)
2506 {
2507 if (dwIpAddr <= MAKEIPADDRESS(127, 255, 255, 255))
2509 else if (dwIpAddr <= MAKEIPADDRESS(191, 255, 255, 255))
2511 else if (dwIpAddr <= MAKEIPADDRESS(223, 255, 255, 255))
2512 SendDlgItemMessageW(hwndDlg, IDC_SUBNETMASK, IPM_SETADDRESS, 0, (LPARAM)MAKEIPADDRESS(255, 255, 255, 0));
2513 }
2514 }
2515 }
2516 else if (lppsn->hdr.code == PSN_APPLY)
2517 {
2521 else
2523
2524 return TRUE;
2525 }
2526 break;
2527 case WM_COMMAND:
2528 if (HIWORD(wParam) == BN_CLICKED)
2529 {
2530 switch (LOWORD(wParam))
2531 {
2532 case IDC_USEDHCP:
2534 {
2535 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
2544 }
2545 break;
2546 case IDC_NODHCP:
2547 if (SendDlgItemMessageW(hwndDlg, IDC_NODHCP, BM_GETCHECK, 0, 0) == BST_CHECKED)
2548 {
2549 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
2554 {
2556 }
2561 SendMessageW(GetParent(hwndDlg), PSM_REMOVEPAGE, 1, 0);
2562 }
2563 break;
2564 case IDC_AUTODNS:
2566 {
2567 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
2572 }
2573 break;
2574 case IDC_FIXEDDNS:
2576 {
2577 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
2580 }
2581 break;
2582 case IDC_A