ReactOS 0.4.16-dev-981-g80eb313
setup.cpp
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Shell
3 * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
4 * PURPOSE: ReactOS Networking Configuration
5 * COPYRIGHT: Copyright 2016 Eric Kohl
6 */
7
8#include "precomp.h"
9
10#include <syssetup/syssetup.h>
11
12
13#define NETWORK_SETUP_MAGIC 0x50515253
14
15typedef struct _NETWORKSETUPDATA
16{
19
20 /* settings page data */
25
26extern "C"
27{
28
29typedef struct _NETWORKCOMPONENT
30{
34
36 {(LPWSTR)L"MS_TCPIP", &GUID_DEVCLASS_NETTRANS},
37 {(LPWSTR)L"MS_NDISUIO", &GUID_DEVCLASS_NETTRANS}
38};
39
40
41static
42VOID
44 HWND hwndDlg,
46 PSETUPDATA pSetupData)
47{
49}
50
51
52static
55 LPWSTR pszComponentName,
56 const GUID *pClassGuid)
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}
175
176static
177DWORD
178WINAPI
180 _In_ LPVOID lpParameter)
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}
209
210static
214 HWND hwndDlg,
215 UINT uMsg,
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}
283
284static
288 HWND hwndDlg,
289 UINT uMsg,
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}
369
370static
374 HWND hwndDlg,
375 UINT uMsg,
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}
437
438static
442 HWND hwndDlg,
443 UINT uMsg,
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}
555
556
557DWORD
558WINAPI
560 PDWORD pPageCount,
561 HPROPSHEETPAGE *pPages,
562 PSETUPDATA pSetupData)
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}
633
634} // extern "C"
#define ERR(fmt,...)
Definition: precomp.h:57
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
wcscpy
#define ERROR_OUTOFMEMORY
Definition: deptool.c:13
#define ERROR_SUCCESS
Definition: deptool.c:10
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define IDS_NETWORKCOMPONENTTITLE
Definition: resource.h:125
#define IDD_NETWORKCOMPONENTPAGE
Definition: resource.h:62
#define IDS_REACTOS_SETUP
Definition: resource.h:129
#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 IDC_NETWORK_CUSTOM
Definition: resource.h:60
#define IDS_NETWORKSETTINGSSUBTITLE
Definition: resource.h:124
#define IDC_NETWORK_TYPICAL
Definition: resource.h:59
#define IDS_NETWORKDOMAINTITLE
Definition: resource.h:127
#define IDC_SELECT_WORKGROUP
Definition: resource.h:70
#define IDS_NETWORKDOMAINSUBTITLE
Definition: resource.h:128
#define IDC_INSTALL_PROGRESS
Definition: resource.h:56
#define IDS_WZD_DOMAIN_NAME
Definition: resource.h:130
#define IDC_NETWORK_DEVICE
Definition: resource.h:64
#define IDS_NETWORKCOMPONENTSUBTITLE
Definition: resource.h:126
#define IDC_DOMAIN_NAME
Definition: resource.h:72
static const WCHAR Title[]
Definition: oid.c:1259
#define GetProcessHeap()
Definition: compat.h:736
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
#define CALLBACK
Definition: compat.h:35
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
BOOL WINAPI IsBadReadPtr(IN LPCVOID lp, IN UINT_PTR ucb)
Definition: except.c:805
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
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
unsigned long DWORD
Definition: ntddk_ex.h:95
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
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
ULONG Release()
#define S_OK
Definition: intsafe.h:52
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
unsigned int UINT
Definition: ndis.h:50
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
HINSTANCE netshell_hInstance
Definition: netshell.cpp:12
#define _In_
Definition: no_sal2.h:158
#define L(x)
Definition: ntvdm.h:50
#define MAKEINTRESOURCE(i)
Definition: ntverrsrc.c:25
DWORD * PDWORD
Definition: pedump.c:68
#define PropSheet_PressButton(d, i)
Definition: prsht.h:348
#define CreatePropertySheetPage
Definition: prsht.h:399
#define PSN_WIZNEXT
Definition: prsht.h:121
#define PSP_DEFAULT
Definition: prsht.h:22
#define PSWIZB_NEXT
Definition: prsht.h:154
#define PSWIZB_BACK
Definition: prsht.h:153
#define PSBTN_NEXT
Definition: prsht.h:147
#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 PROPSHEETPAGE
Definition: prsht.h:389
#define PBM_SETPOS
Definition: commctrl.h:2189
#define PBM_SETRANGE
Definition: commctrl.h:2188
#define WM_NOTIFY
Definition: richedit.h:61
#define exit(n)
Definition: config.h:202
struct _NETWORKSETUPDATA * PNETWORKSETUPDATA
static INT_PTR CALLBACK NetworkSettingsPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: setup.cpp:287
DWORD WINAPI NetSetupRequestWizardPages(PDWORD pPageCount, HPROPSHEETPAGE *pPages, PSETUPDATA pSetupData)
Definition: setup.cpp:559
struct _NETWORKCOMPONENT PNETWORKCOMPONENT
struct _NETWORKSETUPDATA NETWORKSETUPDATA
static HRESULT InstallNetworkComponent(LPWSTR pszComponentName, const GUID *pClassGuid)
Definition: setup.cpp:54
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 NETWORKCOMPONENT NetworkComponents[]
Definition: setup.cpp:35
static VOID SetBoldText(HWND hwndDlg, INT control, PSETUPDATA pSetupData)
Definition: setup.cpp:43
static DWORD WINAPI InstallThreadProc(_In_ LPVOID lpParameter)
Definition: setup.cpp:179
static INT_PTR CALLBACK NetworkInitPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: setup.cpp:213
struct _NETWORKCOMPONENT NETWORKCOMPONENT
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
const GUID * pClassGuid
Definition: setup.cpp:32
LPWSTR pszDeviceId
Definition: setup.cpp:31
BOOL bTypicalNetworkSetup
Definition: setup.cpp:22
BOOL bInitialSetupRun
Definition: setup.cpp:21
PSETUPDATA pSetupData
Definition: setup.cpp:18
HINSTANCE hInstance
Definition: reactos.h:136
HFONT hBoldFont
Definition: reactos.h:140
UINT uPostNetworkWizardPage
Definition: syssetup.h:59
UINT uFirstNetworkWizardPage
Definition: syssetup.h:58
BOOL UnattendSetup
Definition: syssetup.h:46
Definition: dialog.c:52
UINT code
Definition: winuser.h:3170
OBO_TOKEN_TYPE Type
Definition: netcfgx.h:350
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
Definition: synch.c:790
#define GetWindowLongPtr
Definition: treelist.c:73
#define SetWindowLongPtr
Definition: treelist.c:70
#define GWLP_USERDATA
Definition: treelist.c:63
int32_t INT_PTR
Definition: typedefs.h:64
uint32_t DWORD_PTR
Definition: typedefs.h:65
int32_t INT
Definition: typedefs.h:58
UINT WINAPI GetDlgItemTextW(HWND hDlg, int nIDDlgItem, LPWSTR lpString, int nMaxCount)
Definition: dialog.c:2263
#define ZeroMemory
Definition: winbase.h:1743
LONG_PTR LPARAM
Definition: windef.h:208
UINT_PTR WPARAM
Definition: windef.h:207
#define WINAPI
Definition: msvc.h:6
#define ERROR_BUFFER_OVERFLOW
Definition: winerror.h:185
#define MAKELPARAM(l, h)
Definition: winuser.h:4019
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)
#define WM_INITDIALOG
Definition: winuser.h:1750
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
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define MB_ICONERROR
Definition: winuser.h:798
UINT WINAPI IsDlgButtonChecked(_In_ HWND, _In_ int)
HWND WINAPI SetFocus(_In_opt_ HWND)
#define WM_SETFONT
Definition: winuser.h:1661
struct tagNMHDR * LPNMHDR
#define MB_OK
Definition: winuser.h:801
#define PostMessage
Definition: winuser.h:5852
HWND WINAPI GetParent(_In_ HWND)
#define DWLP_MSGRESULT
Definition: winuser.h:881
#define WM_USER
Definition: winuser.h:1906
#define WM_DESTROY
Definition: winuser.h:1620
#define SendDlgItemMessage
Definition: winuser.h:5862
#define BST_CHECKED
Definition: winuser.h:197
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184