ReactOS 0.4.16-dev-1019-g2c2cdfd
setup.cpp File Reference
#include "precomp.h"
#include <syssetup/syssetup.h>
Include dependency graph for setup.cpp:

Go to the source code of this file.

Classes

struct  _NETWORKSETUPDATA
 
struct  _NETWORKCOMPONENT
 

Macros

#define NETWORK_SETUP_MAGIC   0x50515253
 

Typedefs

typedef struct _NETWORKSETUPDATA NETWORKSETUPDATA
 
typedef struct _NETWORKSETUPDATAPNETWORKSETUPDATA
 
typedef struct _NETWORKCOMPONENT NETWORKCOMPONENT
 
typedef struct _NETWORKCOMPONENT PNETWORKCOMPONENT
 

Functions

static VOID SetBoldText (HWND hwndDlg, INT control, PSETUPDATA pSetupData)
 
static HRESULT InstallNetworkComponent (LPWSTR pszComponentName, const GUID *pClassGuid)
 
static DWORD WINAPI InstallThreadProc (_In_ LPVOID lpParameter)
 
static INT_PTR CALLBACK NetworkInitPageDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static INT_PTR CALLBACK NetworkSettingsPageDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static INT_PTR CALLBACK NetworkComponentPageDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static INT_PTR CALLBACK NetworkDomainPageDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
DWORD WINAPI NetSetupRequestWizardPages (PDWORD pPageCount, HPROPSHEETPAGE *pPages, PSETUPDATA pSetupData)
 

Variables

static NETWORKCOMPONENT NetworkComponents []
 

Macro Definition Documentation

◆ NETWORK_SETUP_MAGIC

#define NETWORK_SETUP_MAGIC   0x50515253

Definition at line 13 of file setup.cpp.

Typedef Documentation

◆ NETWORKCOMPONENT

◆ NETWORKSETUPDATA

◆ PNETWORKCOMPONENT

◆ PNETWORKSETUPDATA

Function Documentation

◆ InstallNetworkComponent()

static HRESULT InstallNetworkComponent ( LPWSTR  pszComponentName,
const GUID pClassGuid 
)
static

Definition at line 54 of file setup.cpp.

57{
58 INetCfg *pNetCfg = NULL;
59 INetCfgLock *pNetCfgLock = NULL;
60 INetCfgClassSetup *pNetCfgClassSetup = NULL;
61 INetCfgComponent *pNetCfgComponent = NULL;
62 BOOL fWriteLocked = FALSE, fInitialized = FALSE;
63 OBO_TOKEN OboToken;
64 HRESULT hr;
65
66 TRACE("InstallNetworkComponent(%S)\n", pszComponentName);
67
69 if (hr != S_OK)
70 {
71 ERR("CoInitialize failed\n");
72 goto exit;
73 }
74
76 NULL,
77 CLSCTX_INPROC_SERVER,
79 (PVOID*)&pNetCfg);
80 if (hr != S_OK)
81 {
82 ERR("CoCreateInstance failed\n");
83 goto exit;
84 }
85
86 /* Acquire the write-lock */
88 (PVOID*)&pNetCfgLock);
89 if (hr != S_OK)
90 {
91 ERR("QueryInterface failed\n");
92 goto exit;
93 }
94
95 hr = pNetCfgLock->AcquireWriteLock(5000,
96 L"SysSetup",
97 NULL);
98 if (hr != S_OK)
99 {
100 ERR("AcquireWriteLock failed\n");
101 goto exit;
102 }
103
104 fWriteLocked = TRUE;
105
106 /* Initialize the network configuration */
107 hr = pNetCfg->Initialize(NULL);
108 if (hr != S_OK)
109 {
110 ERR("Initialize failed\n");
111 goto exit;
112 }
113
114 fInitialized = TRUE;
115
116 hr = pNetCfg->QueryNetCfgClass(pClassGuid,
118 (PVOID*)&pNetCfgClassSetup);
119 if (hr != S_OK)
120 {
121 ERR("QueryNetCfgClass failed\n");
122 goto exit;
123 }
124
125 ZeroMemory(&OboToken, sizeof(OboToken));
126 OboToken.Type = OBO_USER;
127
128 hr = pNetCfgClassSetup->Install(pszComponentName,
129 &OboToken,
130 0, //NSF_PRIMARYINSTALL,
131 0,
132 NULL,
133 NULL,
134 &pNetCfgComponent);
135 if (hr == S_OK)
136 {
137 if (pNetCfgComponent != NULL)
138 pNetCfgComponent->Release();
139 }
140 else
141 {
142 ERR("Install failed\n");
143 goto exit;
144 }
145
146 hr = pNetCfg->Apply();
147 if (hr != S_OK)
148 {
149 ERR("Apply failed\n");
150 goto exit;
151 }
152
153exit:
154 if (pNetCfgClassSetup != NULL)
155 pNetCfgClassSetup->Release();
156
157 if (fInitialized)
158 pNetCfg->Uninitialize();
159
160 if (fWriteLocked)
161 pNetCfgLock->ReleaseWriteLock();
162
163 if (pNetCfgLock != NULL)
164 pNetCfgLock->Release();
165
166 if (pNetCfg != NULL)
167 pNetCfg->Release();
168
170
171 TRACE("InstallNetworkComponent() done!\n");
172
173 return hr;
174}
#define ERR(fmt,...)
Definition: precomp.h:57
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
Definition: compobj.c:1964
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: compobj.c:2067
unsigned int BOOL
Definition: ntddk_ex.h:94
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
nsrefcnt Release()
#define S_OK
Definition: intsafe.h:52
EXTERN_C const IID IID_INetCfgClassSetup
Definition: netcfgx.h:361
EXTERN_C const IID IID_INetCfgLock
Definition: netcfgx.h:17
EXTERN_C const GUID CLSID_CNetCfg
Definition: netcfgx.h:299
@ OBO_USER
Definition: netcfgx.h:343
EXTERN_C const IID IID_INetCfg
Definition: netcfgx.h:300
#define L(x)
Definition: ntvdm.h:50
#define exit(n)
Definition: config.h:202
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
OBO_TOKEN_TYPE Type
Definition: netcfgx.h:350
#define ZeroMemory
Definition: winbase.h:1743

Referenced by INetCfgClassSetup_fnInstall(), InstallLiveCD(), and InstallThreadProc().

◆ InstallThreadProc()

static DWORD WINAPI InstallThreadProc ( _In_ LPVOID  lpParameter)
static

Definition at line 179 of file setup.cpp.

181{
182 PNETWORKSETUPDATA pNetworkSetupData = (PNETWORKSETUPDATA)lpParameter;
183 UINT i, count;
184
185 TRACE("InstallThreadProc()\n");
186
187 count = sizeof(NetworkComponents) / sizeof(NETWORKCOMPONENT);
188 TRACE("Network Components: %u\n", count);
189
192
193 for (i = 0; i < count; i++)
194 {
195 TRACE("Install Network Component: %S\n", NetworkComponents[i].pszDeviceId);
198 Sleep(500);
199 }
200
201 TRACE("Done\n");
202
203 /* Done */
204 pNetworkSetupData->bInitialSetupRun = TRUE;
205 PostMessage(pNetworkSetupData->hwndPage, WM_USER, 0, 0);
206
207 return 0;
208}
#define IDC_INSTALL_PROGRESS
Definition: resource.h:56
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned int UINT
Definition: ndis.h:50
#define PBM_SETPOS
Definition: commctrl.h:2189
#define PBM_SETRANGE
Definition: commctrl.h:2188
struct _NETWORKSETUPDATA * PNETWORKSETUPDATA
static HRESULT InstallNetworkComponent(LPWSTR pszComponentName, const GUID *pClassGuid)
Definition: setup.cpp:54
static NETWORKCOMPONENT NetworkComponents[]
Definition: setup.cpp:35
BOOL bInitialSetupRun
Definition: setup.cpp:21
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
Definition: synch.c:790
#define MAKELPARAM(l, h)
Definition: winuser.h:4019
#define PostMessage
Definition: winuser.h:5852
#define WM_USER
Definition: winuser.h:1906
#define SendDlgItemMessage
Definition: winuser.h:5862

Referenced by NetworkInitPageDlgProc().

◆ NetSetupRequestWizardPages()

DWORD WINAPI NetSetupRequestWizardPages ( PDWORD  pPageCount,
HPROPSHEETPAGE pPages,
PSETUPDATA  pSetupData 
)

Definition at line 559 of file setup.cpp.

563{
564 PNETWORKSETUPDATA pNetworkSetupData;
565 PROPSHEETPAGE psp = {0};
566 DWORD dwPageCount = 4;
567 INT nPage = 0;
568
569 TRACE("NetSetupRequestWizardPages(%p %p %p)\n", pPageCount, pPages, pSetupData);
570
571 if (pPageCount == NULL)
573
574 if (pPages == NULL)
575 {
576 TRACE("Return %lu pages\n", dwPageCount);
577 *pPageCount = dwPageCount;
578 return ERROR_SUCCESS;
579 }
580
581 if (*pPageCount < dwPageCount)
583
585
587 if (pNetworkSetupData == NULL)
588 return ERROR_OUTOFMEMORY;
589
590 pNetworkSetupData->dwMagic = NETWORK_SETUP_MAGIC;
591 pNetworkSetupData->pSetupData = pSetupData;
592
593 /* Create the Network Settings page */
594 psp.dwSize = sizeof(PROPSHEETPAGE);
596 psp.lParam = (LPARAM)pNetworkSetupData;
597
598 psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE;
599 psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_NETWORKINITTITLE);
600 psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_NETWORKINITSUBTITLE);
601 psp.pfnDlgProc = NetworkInitPageDlgProc;
602 psp.pszTemplate = MAKEINTRESOURCE(IDD_NETWORKINITPAGE);
603 pPages[nPage++] = CreatePropertySheetPage(&psp);
604
605 psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE;
606 psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_NETWORKSETTINGSTITLE);
607 psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_NETWORKSETTINGSSUBTITLE);
608 psp.pfnDlgProc = NetworkSettingsPageDlgProc;
609 psp.pszTemplate = MAKEINTRESOURCE(IDD_NETWORKSETTINGSPAGE);
610 pPages[nPage++] = CreatePropertySheetPage(&psp);
611
612 /* Create the Network Components page */
613 psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE;
614 psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_NETWORKCOMPONENTTITLE);
615 psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_NETWORKCOMPONENTSUBTITLE);
616 psp.pfnDlgProc = NetworkComponentPageDlgProc;
617 psp.pszTemplate = MAKEINTRESOURCE(IDD_NETWORKCOMPONENTPAGE);
618 pPages[nPage++] = CreatePropertySheetPage(&psp);
619
620 /* Create the Domain/Workgroup page */
621 psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE;
622 psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_NETWORKDOMAINTITLE);
623 psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_NETWORKDOMAINSUBTITLE);
624 psp.pfnDlgProc = NetworkDomainPageDlgProc;
625 psp.pszTemplate = MAKEINTRESOURCE(IDD_NETWORKDOMAINPAGE);
626 pPages[nPage++] = CreatePropertySheetPage(&psp);
627
628 TRACE("Return %lu pages\n", dwPageCount);
629 *pPageCount = dwPageCount;
630
631 return ERROR_SUCCESS;
632}
#define ERROR_OUTOFMEMORY
Definition: deptool.c:13
#define ERROR_SUCCESS
Definition: deptool.c:10
#define IDS_NETWORKCOMPONENTTITLE
Definition: resource.h:125
#define IDD_NETWORKCOMPONENTPAGE
Definition: resource.h:62
#define IDS_NETWORKSETTINGSTITLE
Definition: resource.h:123
#define IDS_NETWORKINITTITLE
Definition: resource.h:121
#define IDD_NETWORKDOMAINPAGE
Definition: resource.h:69
#define IDS_NETWORKINITSUBTITLE
Definition: resource.h:122
#define IDD_NETWORKINITPAGE
Definition: resource.h:55
#define IDD_NETWORKSETTINGSPAGE
Definition: resource.h:58
#define IDS_NETWORKSETTINGSSUBTITLE
Definition: resource.h:124
#define IDS_NETWORKDOMAINTITLE
Definition: resource.h:127
#define IDS_NETWORKDOMAINSUBTITLE
Definition: resource.h:128
#define IDS_NETWORKCOMPONENTSUBTITLE
Definition: resource.h:126
#define GetProcessHeap()
Definition: compat.h:736
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define HeapAlloc
Definition: compat.h:733
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
unsigned long DWORD
Definition: ntddk_ex.h:95
HINSTANCE netshell_hInstance
Definition: netshell.cpp:12
#define MAKEINTRESOURCE(i)
Definition: ntverrsrc.c:25
#define CreatePropertySheetPage
Definition: prsht.h:399
#define PSP_DEFAULT
Definition: prsht.h:22
#define PROPSHEETPAGE
Definition: prsht.h:389
static INT_PTR CALLBACK NetworkSettingsPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: setup.cpp:287
struct _NETWORKSETUPDATA NETWORKSETUPDATA
static INT_PTR CALLBACK NetworkDomainPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: setup.cpp:441
static INT_PTR CALLBACK NetworkComponentPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: setup.cpp:373
#define NETWORK_SETUP_MAGIC
Definition: setup.cpp:13
static INT_PTR CALLBACK NetworkInitPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: setup.cpp:213
PSETUPDATA pSetupData
Definition: setup.cpp:18
HINSTANCE hInstance
Definition: reactos.h:136
UINT uFirstNetworkWizardPage
Definition: syssetup.h:58
int32_t INT
Definition: typedefs.h:58
LONG_PTR LPARAM
Definition: windef.h:208
#define ERROR_BUFFER_OVERFLOW
Definition: winerror.h:185

◆ NetworkComponentPageDlgProc()

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

Definition at line 373 of file setup.cpp.

378{
379 PNETWORKSETUPDATA pNetworkSetupData;
380 PSETUPDATA pSetupData;
381 LPNMHDR lpnm;
382
383 /* Retrieve pointer to the global setup data */
384 pNetworkSetupData = (PNETWORKSETUPDATA)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
385 if ((pNetworkSetupData != NULL) &&
386 (pNetworkSetupData->dwMagic == NETWORK_SETUP_MAGIC))
387 pSetupData = pNetworkSetupData->pSetupData;
388
389 switch (uMsg)
390 {
391 case WM_INITDIALOG:
392 /* Save pointer to the global setup data */
393 pNetworkSetupData = (PNETWORKSETUPDATA)((LPPROPSHEETPAGE)lParam)->lParam;
394 SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (DWORD_PTR)pNetworkSetupData);
395 pSetupData = pNetworkSetupData->pSetupData;
396
397 SetBoldText(hwndDlg, IDC_NETWORK_DEVICE, pSetupData);
398
399 if (pSetupData->UnattendSetup)
400 {
401 //...
402 }
403 break;
404
405 case WM_DESTROY:
406 /* ATTENTION: Free pNetworkSetupData only in one of the page functions!!! */
407 //...
408 break;
409
410 case WM_NOTIFY:
411 lpnm = (LPNMHDR)lParam;
412
413 switch (lpnm->code)
414 {
415 case PSN_SETACTIVE:
416 /* Enable the Back and Next buttons */
418 if (pSetupData->UnattendSetup)
419 {
421 return TRUE;
422 }
423 break;
424
425 case PSN_WIZBACK:
426 pSetupData->UnattendSetup = FALSE;
427 break;
428 }
429 break;
430
431 default:
432 break;
433 }
434
435 return FALSE;
436}
LPARAM lParam
Definition: combotst.c:139
#define IDC_NETWORK_DEVICE
Definition: resource.h:64
#define PSWIZB_NEXT
Definition: prsht.h:154
#define PSWIZB_BACK
Definition: prsht.h:153
#define PropSheet_SetWizButtons(d, f)
Definition: prsht.h:357
#define LPPROPSHEETPAGE
Definition: prsht.h:390
#define PSN_WIZBACK
Definition: prsht.h:120
#define PSN_SETACTIVE
Definition: prsht.h:115
#define WM_NOTIFY
Definition: richedit.h:61
static VOID SetBoldText(HWND hwndDlg, INT control, PSETUPDATA pSetupData)
Definition: setup.cpp:43
BOOL UnattendSetup
Definition: syssetup.h:46
UINT code
Definition: winuser.h:3170
#define GetWindowLongPtr
Definition: treelist.c:73
#define SetWindowLongPtr
Definition: treelist.c:70
#define GWLP_USERDATA
Definition: treelist.c:63
uint32_t DWORD_PTR
Definition: typedefs.h:65
#define WM_INITDIALOG
Definition: winuser.h:1750
struct tagNMHDR * LPNMHDR
HWND WINAPI GetParent(_In_ HWND)
#define DWLP_MSGRESULT
Definition: winuser.h:881
#define WM_DESTROY
Definition: winuser.h:1620

Referenced by NetSetupRequestWizardPages().

◆ NetworkDomainPageDlgProc()

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

Definition at line 441 of file setup.cpp.

446{
447 PNETWORKSETUPDATA pNetworkSetupData;
448 PSETUPDATA pSetupData;
449 WCHAR DomainName[51];
450 WCHAR Title[64];
451 WCHAR ErrorName[256];
452 LPNMHDR lpnm;
453
454 /* Retrieve pointer to the global setup data */
455 pNetworkSetupData = (PNETWORKSETUPDATA)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
456 if ((pNetworkSetupData != NULL) &&
457 (pNetworkSetupData->dwMagic == NETWORK_SETUP_MAGIC))
458 pSetupData = pNetworkSetupData->pSetupData;
459
460 switch (uMsg)
461 {
462 case WM_INITDIALOG:
463 /* Save pointer to the global setup data */
464 pNetworkSetupData = (PNETWORKSETUPDATA)((LPPROPSHEETPAGE)lParam)->lParam;
465 SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (DWORD_PTR)pNetworkSetupData);
466 pSetupData = pNetworkSetupData->pSetupData;
467
468 /* Set the workgroup option as the default */
470
471 wcscpy(DomainName, L"WORKGROUP");
472
473 /* Display current computer name */
474 SetDlgItemTextW(hwndDlg, IDC_DOMAIN_NAME, DomainName);
475
476 /* Set focus to owner name */
478
479 if (pSetupData->UnattendSetup)
480 {
481 //...
482 }
483 break;
484
485 case WM_DESTROY:
486 //...
487 /* ATTENTION: Free pNetworkSetupData only in one of the page functions!!! */
488 if (pNetworkSetupData != NULL)
489 {
490 if ((!IsBadReadPtr(pNetworkSetupData, sizeof(NETWORKSETUPDATA))) &&
491 (pNetworkSetupData->dwMagic == NETWORK_SETUP_MAGIC))
492 HeapFree(GetProcessHeap(), 0, pNetworkSetupData);
493
495 }
496 break;
497
498 case WM_NOTIFY:
499 lpnm = (LPNMHDR)lParam;
500
501 switch (lpnm->code)
502 {
503 case PSN_SETACTIVE:
504 /* Enable the Back and Next buttons */
506 if (pSetupData->UnattendSetup)
507 {
509 return TRUE;
510 }
511 break;
512
513 case PSN_WIZNEXT:
514 DomainName[0] = 0;
515 if (GetDlgItemTextW(hwndDlg, IDC_DOMAIN_NAME, DomainName, 50) == 0)
516 {
517 if (0 == LoadStringW(netshell_hInstance, IDS_REACTOS_SETUP, Title, sizeof(Title) / sizeof(Title[0])))
518 {
519 wcscpy(Title, L"ReactOS Setup");
520 }
521 if (0 == LoadStringW(netshell_hInstance, IDS_WZD_DOMAIN_NAME, ErrorName, sizeof(ErrorName) / sizeof(ErrorName[0])))
522 {
523 wcscpy(ErrorName, L"Setup cannot continue until you\nenter the name of your domain/workgroup.");
524 }
525 MessageBoxW(hwndDlg, ErrorName, Title, MB_ICONERROR | MB_OK);
526
528 SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, -1);
529
530 //TODO: Implement setting the Domain/Workgroup
531
532 return TRUE;
533 }
534 break;
535
536 case PSN_WIZBACK:
537 pSetupData->UnattendSetup = FALSE;
538
539 /* If the Typical setup chosen, then skip back to the Settings Page */
540 if (pNetworkSetupData->bTypicalNetworkSetup == TRUE)
541 {
543 return TRUE;
544 }
545 break;
546 }
547 break;
548
549 default:
550 break;
551 }
552
553 return FALSE;
554}
wcscpy
#define IDS_REACTOS_SETUP
Definition: resource.h:129
#define IDC_SELECT_WORKGROUP
Definition: resource.h:70
#define IDS_WZD_DOMAIN_NAME
Definition: resource.h:130
#define IDC_DOMAIN_NAME
Definition: resource.h:72
static const WCHAR Title[]
Definition: oid.c:1259
#define HeapFree(x, y, z)
Definition: compat.h:735
BOOL WINAPI IsBadReadPtr(IN LPCVOID lp, IN UINT_PTR ucb)
Definition: except.c:805
#define PSN_WIZNEXT
Definition: prsht.h:121
BOOL bTypicalNetworkSetup
Definition: setup.cpp:22
UINT uPostNetworkWizardPage
Definition: syssetup.h:59
UINT WINAPI GetDlgItemTextW(HWND hDlg, int nIDDlgItem, LPWSTR lpString, int nMaxCount)
Definition: dialog.c:2263
UINT_PTR WPARAM
Definition: windef.h:207
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define BM_SETCHECK
Definition: winuser.h:1932
#define MB_ICONERROR
Definition: winuser.h:798
HWND WINAPI SetFocus(_In_opt_ HWND)
#define MB_OK
Definition: winuser.h:801
#define BST_CHECKED
Definition: winuser.h:197
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by NetSetupRequestWizardPages().

◆ NetworkInitPageDlgProc()

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

Definition at line 213 of file setup.cpp.

218{
219 PNETWORKSETUPDATA pNetworkSetupData;
220 PSETUPDATA pSetupData;
221 LPNMHDR lpnm;
222
223 /* Retrieve pointer to the global setup data */
224 pNetworkSetupData = (PNETWORKSETUPDATA)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
225 if ((pNetworkSetupData != NULL) &&
226 (pNetworkSetupData->dwMagic == NETWORK_SETUP_MAGIC))
227 pSetupData = pNetworkSetupData->pSetupData;
228
229 switch (uMsg)
230 {
231 case WM_INITDIALOG:
232 /* Save pointer to the global setup data */
233 pNetworkSetupData = (PNETWORKSETUPDATA)((LPPROPSHEETPAGE)lParam)->lParam;
234 SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (DWORD_PTR)pNetworkSetupData);
235 pSetupData = pNetworkSetupData->pSetupData;
236
237 if (pSetupData->UnattendSetup)
238 {
239 //...
240 }
241 break;
242
243 case WM_DESTROY:
244 /* ATTENTION: Free pNetworkSetupData only in one of the page functions!!! */
245 //...
246 break;
247
248 case WM_NOTIFY:
249 lpnm = (LPNMHDR)lParam;
250
251 switch (lpnm->code)
252 {
253 case PSN_SETACTIVE:
254 /* Disable the Back and Next buttons */
256 TRACE("Starting install thread!\n");
257 pNetworkSetupData->hwndPage = hwndDlg;
258 CreateThread(NULL, 0, InstallThreadProc, (LPVOID)pNetworkSetupData, 0, NULL);
259 TRACE("Install thread done!\n");
260 break;
261
262 case PSN_WIZNEXT:
263 break;
264
265 case PSN_WIZBACK:
266 break;
267 }
268 break;
269
270 case WM_USER:
271 TRACE("WM_USER!\n");
272 /* Enable the Next button and press it */
275 break;
276
277 default:
278 break;
279 }
280
281 return FALSE;
282}
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
Definition: thread.c:137
#define PropSheet_PressButton(d, i)
Definition: prsht.h:348
#define PSBTN_NEXT
Definition: prsht.h:147
static DWORD WINAPI InstallThreadProc(_In_ LPVOID lpParameter)
Definition: setup.cpp:179

Referenced by NetSetupRequestWizardPages().

◆ NetworkSettingsPageDlgProc()

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

Definition at line 287 of file setup.cpp.

292{
293 PNETWORKSETUPDATA pNetworkSetupData;
294 PSETUPDATA pSetupData;
295 LPNMHDR lpnm;
296
297 /* Retrieve pointer to the global setup data */
298 pNetworkSetupData = (PNETWORKSETUPDATA)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
299 if ((pNetworkSetupData != NULL) &&
300 (pNetworkSetupData->dwMagic == NETWORK_SETUP_MAGIC))
301 pSetupData = pNetworkSetupData->pSetupData;
302
303 switch (uMsg)
304 {
305 case WM_INITDIALOG:
306 /* Save pointer to the global setup data */
307 pNetworkSetupData = (PNETWORKSETUPDATA)((LPPROPSHEETPAGE)lParam)->lParam;
308 SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (DWORD_PTR)pNetworkSetupData);
309 pSetupData = pNetworkSetupData->pSetupData;
310
311 /* Set the fonts of both the options to bold */
312 SetBoldText(hwndDlg, IDC_NETWORK_TYPICAL, pSetupData);
313 SetBoldText(hwndDlg, IDC_NETWORK_CUSTOM, pSetupData);
314
315 /* Set the typical settings option as the default */
317
318 if (pSetupData->UnattendSetup)
319 {
320 //...
321 }
322 break;
323
324 case WM_DESTROY:
325 /* ATTENTION: Free pNetworkSetupData only in one of the page functions!!! */
326 //...
327 break;
328
329 case WM_NOTIFY:
330 lpnm = (LPNMHDR)lParam;
331
332 switch (lpnm->code)
333 {
334 case PSN_SETACTIVE:
335 /* Enable the Next button only */
337 if (pSetupData->UnattendSetup)
338 {
340 return TRUE;
341 }
342 break;
343
344 case PSN_WIZNEXT:
345 pNetworkSetupData->bTypicalNetworkSetup = FALSE;
346
347 /* If the Typical Settings button is chosen, then skip to the Domain Page */
349 {
350 pNetworkSetupData->bTypicalNetworkSetup = TRUE;
351
353 return TRUE;
354 }
355 break;
356
357 case PSN_WIZBACK:
358 pSetupData->UnattendSetup = FALSE;
359 break;
360 }
361 break;
362
363 default:
364 break;
365 }
366
367 return FALSE;
368}
#define IDC_NETWORK_CUSTOM
Definition: resource.h:60
#define IDC_NETWORK_TYPICAL
Definition: resource.h:59
UINT WINAPI IsDlgButtonChecked(_In_ HWND, _In_ int)

Referenced by NetSetupRequestWizardPages().

◆ SetBoldText()

static VOID SetBoldText ( HWND  hwndDlg,
INT  control,
PSETUPDATA  pSetupData 
)
static

Definition at line 43 of file setup.cpp.

47{
49}
HFONT hBoldFont
Definition: reactos.h:140
Definition: dialog.c:52
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_SETFONT
Definition: winuser.h:1661

Referenced by NetworkComponentPageDlgProc(), and NetworkSettingsPageDlgProc().

Variable Documentation

◆ NetworkComponents

NETWORKCOMPONENT NetworkComponents[]
static
Initial value:
= {
{(LPWSTR)L"MS_TCPIP", &GUID_DEVCLASS_NETTRANS},
{(LPWSTR)L"MS_NDISUIO", &GUID_DEVCLASS_NETTRANS}
}
WCHAR * LPWSTR
Definition: xmlstorage.h:184

Definition at line 35 of file setup.cpp.

Referenced by InstallThreadProc().