ReactOS 0.4.16-dev-112-g52265ae
wizard.c File Reference
#include "newdev_private.h"
#include <wincon.h>
#include <cfgmgr32.h>
#include <shlobj.h>
#include <shlwapi.h>
Include dependency graph for wizard.c:

Go to the source code of this file.

Functions

static VOID CenterWindow (IN HWND hWnd)
 
static BOOL SetFailedInstall (IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DevInfoData OPTIONAL, IN BOOLEAN Set)
 
static BOOL CanDisableDevice (IN DEVINST DevInst, IN HMACHINE hMachine, OUT BOOL *CanDisable)
 
static BOOL IsDeviceStarted (IN DEVINST DevInst, IN HMACHINE hMachine, OUT BOOL *IsEnabled)
 
static BOOL StartDevice (IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DevInfoData OPTIONAL, IN BOOL bEnable, IN DWORD HardwareProfile OPTIONAL, OUT BOOL *bNeedReboot OPTIONAL)
 
static DWORD WINAPI FindDriverProc (IN LPVOID lpParam)
 
static DWORD WINAPI InstallDriverProc (IN LPVOID lpParam)
 
static VOID PopulateCustomPathCombo (IN HWND hwndCombo)
 
static VOID SaveCustomPath (IN HWND hwndCombo)
 
static INT_PTR CALLBACK WelcomeDlgProc (IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
 
static void IncludePath (HWND Dlg, BOOL Enabled)
 
static void AutoDriver (HWND Dlg, BOOL Enabled)
 
static INT CALLBACK BrowseCallbackProc (HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
 
static INT_PTR CALLBACK CHSourceDlgProc (IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
 
static INT_PTR CALLBACK SearchDrvDlgProc (IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
 
static INT_PTR CALLBACK InstallDrvDlgProc (IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
 
static INT_PTR CALLBACK NoDriverDlgProc (IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
 
static INT_PTR CALLBACK InstallFailedDlgProc (IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
 
static INT_PTR CALLBACK NeedRebootDlgProc (IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
 
static INT_PTR CALLBACK FinishDlgProc (IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
 
static HFONT CreateTitleFont (VOID)
 
BOOL DisplayWizard (IN PDEVINSTDATA DevInstData, IN HWND hwndParent, IN UINT startPage)
 

Variables

HANDLE hThread
 

Function Documentation

◆ AutoDriver()

static void AutoDriver ( HWND  Dlg,
BOOL  Enabled 
)
static

Definition at line 575 of file wizard.c.

576{
580}
#define IDC_CHECK_PATH
Definition: resource.h:15
#define IDC_CHECK_MEDIA
Definition: resource.h:14
@ Enabled
Definition: mountmgr.h:179
static void IncludePath(HWND Dlg, BOOL Enabled)
Definition: wizard.c:568
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
UINT WINAPI IsDlgButtonChecked(_In_ HWND, _In_ int)
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)

Referenced by CHSourceDlgProc().

◆ BrowseCallbackProc()

static INT CALLBACK BrowseCallbackProc ( HWND  hwnd,
UINT  uMsg,
LPARAM  lParam,
LPARAM  lpData 
)
static

Definition at line 583 of file wizard.c.

584{
585 BOOL bValid = FALSE;
586
587 switch (uMsg)
588 {
589 case BFFM_INITIALIZED:
590 {
591 PCWSTR pszPath = ((PDEVINSTDATA)lpData)->CustomSearchPath;
592
593 bValid = CheckBestDriver((PDEVINSTDATA)lpData, pszPath);
595 SendMessageW(hwnd, BFFM_ENABLEOK, 0, bValid);
596 break;
597 }
598
599 case BFFM_SELCHANGED:
600 {
601 WCHAR szDir[MAX_PATH];
602
604 {
605 bValid = CheckBestDriver((PDEVINSTDATA)lpData, szDir);
606 }
607 PostMessageW(hwnd, BFFM_ENABLEOK, 0, bValid);
608 break;
609 }
610 }
611 return 0;
612}
LPARAM lParam
Definition: combotst.c:139
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define MAX_PATH
Definition: compat.h:34
unsigned int BOOL
Definition: ntddk_ex.h:94
BOOL CheckBestDriver(_In_ PDEVINSTDATA DevInstData, _In_ PCWSTR pszDir)
Definition: newdev.c:412
struct _DEVINSTDATA * PDEVINSTDATA
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
Definition: pidl.c:1348
#define BFFM_SELCHANGED
Definition: shlobj.h:1237
#define BFFM_ENABLEOK
Definition: shlobj.h:1244
#define BFFM_SETSELECTION
Definition: shlobj.h:1256
#define BFFM_INITIALIZED
Definition: shlobj.h:1236
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
const uint16_t * PCWSTR
Definition: typedefs.h:57
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
LONG_PTR LPARAM
Definition: windef.h:208
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by CHSourceDlgProc(), and CCopyMoveToMenu::DoAction().

◆ CanDisableDevice()

static BOOL CanDisableDevice ( IN DEVINST  DevInst,
IN HMACHINE  hMachine,
OUT BOOL CanDisable 
)
static

Definition at line 124 of file wizard.c.

128{
129 CONFIGRET cr;
130 ULONG Status, ProblemNumber;
131 BOOL Ret = FALSE;
132
134 &ProblemNumber,
135 DevInst,
136 0,
137 hMachine);
138 if (cr == CR_SUCCESS)
139 {
140 *CanDisable = ((Status & DN_DISABLEABLE) != 0);
141 Ret = TRUE;
142 }
143
144 return Ret;
145}
#define DN_DISABLEABLE
Definition: cfg.h:131
RETURN_TYPE CONFIGRET
Definition: cfgmgr32.h:74
#define CR_SUCCESS
Definition: cfgmgr32.h:842
CONFIGRET WINAPI CM_Get_DevNode_Status_Ex(_Out_ PULONG pulStatus, _Out_ PULONG pulProblemNumber, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:3690
Status
Definition: gdiplustypes.h:25
uint32_t ULONG
Definition: typedefs.h:59

Referenced by NoDriverDlgProc().

◆ CenterWindow()

static VOID CenterWindow ( IN HWND  hWnd)
static

Definition at line 31 of file wizard.c.

33{
35 RECT rcParent;
36 RECT rcWindow;
37
39 if (hWndParent == NULL)
41
42 GetWindowRect(hWndParent, &rcParent);
43 GetWindowRect(hWnd, &rcWindow);
44
45 /* Check if the child window fits inside the parent window */
46 if (rcWindow.left < rcParent.left || rcWindow.top < rcParent.top ||
47 rcWindow.right > rcParent.right || rcWindow.bottom > rcParent.bottom)
48 {
49 return;
50 }
51
53 hWnd,
55 ((rcParent.right - rcParent.left) - (rcWindow.right - rcWindow.left)) / 2,
56 ((rcParent.bottom - rcParent.top) - (rcWindow.bottom - rcWindow.top)) / 2,
57 0,
58 0,
60}
HWND hWnd
Definition: settings.c:17
#define NULL
Definition: types.h:112
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define SWP_NOSIZE
Definition: winuser.h:1248
HWND WINAPI GetDesktopWindow(void)
Definition: window.c:628
#define HWND_TOP
Definition: winuser.h:1210
HWND WINAPI GetParent(_In_ HWND)

Referenced by CHSourceDlgProc(), FinishDlgProc(), InstallDrvDlgProc(), InstallFailedDlgProc(), NeedRebootDlgProc(), NoDriverDlgProc(), SearchDrvDlgProc(), and WelcomeDlgProc().

◆ CHSourceDlgProc()

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

Definition at line 615 of file wizard.c.

620{
621 PDEVINSTDATA DevInstData;
622
623 /* Retrieve pointer to the global setup data */
624 DevInstData = (PDEVINSTDATA)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
625
626 switch (uMsg)
627 {
628 case WM_INITDIALOG:
629 {
630 HWND hwndControl, hwndCombo;
631 DWORD dwStyle;
632 COMBOBOXINFO info = { sizeof(info) };
633
634 /* Get pointer to the global setup data */
635 DevInstData = (PDEVINSTDATA)((LPPROPSHEETPAGE)lParam)->lParam;
636 SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (DWORD_PTR)DevInstData);
637
638 hwndControl = GetParent(hwndDlg);
639
640 /* Center the wizard window */
641 CenterWindow(hwndControl);
642
643 /* Hide the system menu */
644 dwStyle = GetWindowLongPtr(hwndControl, GWL_STYLE);
645 SetWindowLongPtr(hwndControl, GWL_STYLE, dwStyle & ~WS_SYSMENU);
646
647 hwndCombo = GetDlgItem(hwndDlg, IDC_COMBO_PATH);
648 PopulateCustomPathCombo(hwndCombo);
649
650 GetComboBoxInfo(hwndCombo, &info);
652
654 hwndDlg,
657 (WPARAM)TRUE,
658 (LPARAM)0);
659 AutoDriver(hwndDlg, TRUE);
660 IncludePath(hwndDlg, FALSE);
661
662 /* Disable manual driver choice for now */
664
665 break;
666 }
667
668 case WM_COMMAND:
669 {
670 switch (LOWORD(wParam))
671 {
673 AutoDriver(hwndDlg, TRUE);
674 return TRUE;
675
676 case IDC_RADIO_CHOOSE:
677 AutoDriver(hwndDlg, FALSE);
678 return TRUE;
679
680 case IDC_CHECK_PATH:
682 return TRUE;
683
684 case IDC_BROWSE:
685 {
686 BROWSEINFOW bi = { 0 };
687 LPITEMIDLIST pidl;
689 WCHAR CustomSearchPath[MAX_PATH] = { 0 };
692
693 if (idx == CB_ERR)
695 else
697
698 if (len < _countof(CustomSearchPath))
699 {
700 if (idx == CB_ERR)
701 GetWindowTextW(GetDlgItem(hwndDlg, IDC_COMBO_PATH), CustomSearchPath, _countof(CustomSearchPath));
702 else
703 SendDlgItemMessageW(hwndDlg, IDC_COMBO_PATH, CB_GETLBTEXT, idx, (LPARAM)CustomSearchPath);
704 }
705 DevInstData->CustomSearchPath = CustomSearchPath;
706
707 bi.hwndOwner = hwndDlg;
709 bi.lpszTitle = Title;
711 bi.lParam = (LPARAM)DevInstData;
712 pidl = SHBrowseForFolderW(&bi);
713 if (pidl)
714 {
717
719 {
720 /* Set the IDC_COMBO_PATH text */
722 }
723
724 /* Free memory, if possible */
726 {
727 IMalloc_Free(malloc, pidl);
728 IMalloc_Release(malloc);
729 }
730 return TRUE;
731 }
732 break;
733 }
734 }
735 break;
736 }
737
738 case WM_NOTIFY:
739 {
740 LPNMHDR lpnm = (LPNMHDR)lParam;
741
742 switch (lpnm->code)
743 {
744 case PSN_SETACTIVE:
745 /* Enable the Next and Back buttons */
747 break;
748
749 case PSN_WIZNEXT:
750 /* Handle a Next button click, if necessary */
752 {
754 HeapFree(GetProcessHeap(), 0, DevInstData->CustomSearchPath);
755 DevInstData->CustomSearchPath = NULL;
757 DevInstData,
760 GetDlgItem(hwndDlg, IDC_COMBO_PATH)))
761 {
763 }
764 else
765 {
767 }
768 }
769 else
770 {
771 /* FIXME */;
772 }
773 return TRUE;
774
775 default:
776 break;
777 }
778 break;
779 }
780
781 default:
782 break;
783 }
784
785 return FALSE;
786}
#define IDC_BROWSE
Definition: resource.h:21
EXTERN_C LPITEMIDLIST WINAPI SHBrowseForFolderW(LPBROWSEINFOW lpbi)
Definition: brfolder.cpp:1352
static HINSTANCE hDllInstance
Definition: clb.c:9
WPARAM wParam
Definition: combotst.c:138
#define malloc
Definition: debug_ros.c:4
unsigned int idx
Definition: utils.c:41
static const WCHAR Title[]
Definition: oid.c:1259
#define GetProcessHeap()
Definition: compat.h:736
#define HeapFree(x, y, z)
Definition: compat.h:735
#define IDC_RADIO_SEARCHHERE
Definition: resource.h:12
#define IDD_SEARCHDRV
Definition: resource.h:23
#define IDD_INSTALLFAILED
Definition: resource.h:26
#define IDC_COMBO_PATH
Definition: resource.h:18
#define IDC_RADIO_CHOOSE
Definition: resource.h:13
#define IDS_BROWSE_FOR_FOLDER_TITLE
Definition: resource.h:37
HRESULT WINAPI SHGetMalloc(LPMALLOC *lpmal)
Definition: shellole.c:285
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum GLsizei len
Definition: glext.h:6722
#define SUCCEEDED(hr)
Definition: intsafe.h:50
static VOID PopulateCustomPathCombo(IN HWND hwndCombo)
Definition: wizard.c:284
static INT CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
Definition: wizard.c:583
static void AutoDriver(HWND Dlg, BOOL Enabled)
Definition: wizard.c:575
static VOID SaveCustomPath(IN HWND hwndCombo)
Definition: wizard.c:359
static VOID CenterWindow(IN HWND hWnd)
Definition: wizard.c:31
BOOL PrepareFoldersToScan(IN PDEVINSTDATA DevInstData, IN BOOL IncludeRemovableDevices, IN BOOL IncludeCustomPath, IN HWND hwndCombo OPTIONAL)
Definition: newdev.c:455
#define LOWORD(l)
Definition: pedump.c:82
#define WS_SYSMENU
Definition: pedump.c:629
#define INT
Definition: polytest.cpp:20
#define PSN_WIZNEXT
Definition: prsht.h:121
#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 PropSheet_SetCurSelByID(d, i)
Definition: prsht.h:354
#define PSN_SETACTIVE
Definition: prsht.h:115
#define WM_NOTIFY
Definition: richedit.h:61
#define BIF_STATUSTEXT
Definition: shlobj.h:1219
#define BIF_RETURNONLYFSDIRS
Definition: shlobj.h:1217
#define BIF_USENEWUI
Definition: shlobj.h:1224
#define BIF_NONEWFOLDERBUTTON
Definition: shlobj.h:1227
HRESULT WINAPI SHAutoComplete(HWND hwndEdit, DWORD dwFlags)
Definition: autocomp.cpp:191
#define SHACF_FILESYS_DIRS
Definition: shlwapi.h:1920
#define _countof(array)
Definition: sndvol32.h:70
base for all directory entries
Definition: entries.h:138
LPWSTR CustomSearchPath
BFFCALLBACK lpfn
Definition: shlobj.h:1205
UINT ulFlags
Definition: shlobj.h:1204
HWND hwndOwner
Definition: shlobj.h:1200
LPCWSTR lpszTitle
Definition: shlobj.h:1203
LPARAM lParam
Definition: shlobj.h:1206
UINT code
Definition: winuser.h:3162
#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
int32_t INT
Definition: typedefs.h:58
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
Definition: window.c:1384
UINT_PTR WPARAM
Definition: windef.h:207
#define CB_GETLBTEXTLEN
Definition: winuser.h:1956
#define CB_GETLBTEXT
Definition: winuser.h:1955
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define WM_COMMAND
Definition: winuser.h:1743
#define CB_ERR
Definition: winuser.h:2438
#define WM_INITDIALOG
Definition: winuser.h:1742
#define BM_SETCHECK
Definition: winuser.h:1924
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
BOOL WINAPI GetComboBoxInfo(_In_ HWND, _Inout_ PCOMBOBOXINFO)
struct tagNMHDR * LPNMHDR
int WINAPI GetWindowTextLengthW(_In_ HWND)
#define CB_GETCURSEL
Definition: winuser.h:1946
#define GWL_STYLE
Definition: winuser.h:855
#define SendDlgItemMessage
Definition: winuser.h:5854

Referenced by DisplayWizard().

◆ CreateTitleFont()

static HFONT CreateTitleFont ( VOID  )
static

Definition at line 1353 of file wizard.c.

1354{
1355 NONCLIENTMETRICSW ncm;
1356 LOGFONTW LogFont;
1357 HDC hdc;
1358 INT FontSize;
1359 HFONT hFont;
1360
1361 ncm.cbSize = sizeof(NONCLIENTMETRICSW);
1362 SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0);
1363
1364 LogFont = ncm.lfMessageFont;
1365 LogFont.lfWeight = FW_BOLD;
1366 wcscpy(LogFont.lfFaceName, L"MS Shell Dlg");
1367
1368 hdc = GetDC(NULL);
1369 FontSize = 12;
1370 LogFont.lfHeight = 0 - GetDeviceCaps (hdc, LOGPIXELSY) * FontSize / 72;
1371 hFont = CreateFontIndirectW(&LogFont);
1372 ReleaseDC(NULL, hdc);
1373
1374 return hFont;
1375}
HFONT hFont
Definition: main.c:53
HDC hdc
Definition: main.c:9
static HDC
Definition: imagelist.c:88
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
#define L(x)
Definition: ntvdm.h:50
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
LONG lfHeight
Definition: dimm.idl:59
LONG lfWeight
Definition: dimm.idl:63
WCHAR lfFaceName[LF_FACESIZE]
Definition: dimm.idl:72
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
#define FW_BOLD
Definition: wingdi.h:378
#define LOGPIXELSY
Definition: wingdi.h:719
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
HDC WINAPI GetDC(_In_opt_ HWND)
#define SystemParametersInfo
Definition: winuser.h:5870

Referenced by DisplayWizard(), and InstallWizard().

◆ DisplayWizard()

BOOL DisplayWizard ( IN PDEVINSTDATA  DevInstData,
IN HWND  hwndParent,
IN UINT  startPage 
)

Definition at line 1378 of file wizard.c.

1382{
1383 PROPSHEETHEADER psh = {0};
1385 PROPSHEETPAGE psp = {0};
1386 HRESULT hr = CoInitialize(NULL); /* for SHAutoComplete */
1387
1388 /* zero based index */
1389 startPage -= IDD_FIRSTPAGE;
1390
1391 /* Create the Welcome page */
1392 ZeroMemory(&psp, sizeof(PROPSHEETPAGE));
1393 psp.dwSize = sizeof(PROPSHEETPAGE);
1394 psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER | PSP_USETITLE;
1395 psp.hInstance = hDllInstance;
1396 psp.lParam = (LPARAM)DevInstData;
1397 psp.pszTitle = MAKEINTRESOURCE(DevInstData->bUpdate ? IDS_UPDATEWIZARDTITLE : IDS_INSTALLWIZARDTITLE);
1398 psp.pfnDlgProc = WelcomeDlgProc;
1399 psp.pszTemplate = MAKEINTRESOURCE(IDD_WELCOMEPAGE);
1401
1402 /* Create the Select Source page */
1403 psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USETITLE;
1404 psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_CHSOURCE_TITLE);
1405 psp.pfnDlgProc = CHSourceDlgProc;
1406 psp.pszTemplate = MAKEINTRESOURCE(IDD_CHSOURCE);
1408
1409 /* Create the Search driver page */
1410 psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USETITLE;
1411 psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_SEARCHDRV_TITLE);
1412 psp.pfnDlgProc = SearchDrvDlgProc;
1413 psp.pszTemplate = MAKEINTRESOURCE(IDD_SEARCHDRV);
1415
1416 /* Create the Install driver page */
1417 psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USETITLE;
1418 psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_INSTALLDRV_TITLE);
1419 psp.pfnDlgProc = InstallDrvDlgProc;
1420 psp.pszTemplate = MAKEINTRESOURCE(IDD_INSTALLDRV);
1422
1423 /* Create the No driver page */
1424 psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER | PSP_USETITLE;
1425 psp.pfnDlgProc = NoDriverDlgProc;
1426 psp.pszTemplate = MAKEINTRESOURCE(IDD_NODRIVER);
1428
1429 /* Create the Install failed page */
1430 psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER | PSP_USETITLE;
1431 psp.pfnDlgProc = InstallFailedDlgProc;
1432 psp.pszTemplate = MAKEINTRESOURCE(IDD_INSTALLFAILED);
1434
1435 /* Create the Need reboot page */
1436 psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER | PSP_USETITLE;
1437 psp.pfnDlgProc = NeedRebootDlgProc;
1438 psp.pszTemplate = MAKEINTRESOURCE(IDD_NEEDREBOOT);
1440
1441 /* Create the Finish page */
1442 psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER | PSP_USETITLE;
1443 psp.pfnDlgProc = FinishDlgProc;
1444 psp.pszTemplate = MAKEINTRESOURCE(IDD_FINISHPAGE);
1446
1447 /* Create the property sheet */
1448 psh.dwSize = sizeof(PROPSHEETHEADER);
1449 psh.dwFlags = PSH_WIZARD97 | PSH_WATERMARK | PSH_HEADER;
1450 psh.hInstance = hDllInstance;
1451 psh.hwndParent = hwndParent;
1452 psh.nPages = IDD_MAXIMUMPAGE + 1;
1453 psh.nStartPage = startPage;
1454 psh.phpage = ahpsp;
1455 psh.pszbmWatermark = MAKEINTRESOURCE(IDB_WATERMARK);
1456 psh.pszbmHeader = MAKEINTRESOURCE(IDB_HEADER);
1457
1458 /* Create title font */
1459 DevInstData->hTitleFont = CreateTitleFont();
1460
1461 /* Display the wizard */
1462 PropertySheet(&psh);
1463
1464 DeleteObject(DevInstData->hTitleFont);
1465
1466 if (SUCCEEDED(hr))
1468 return TRUE;
1469}
#define IDB_HEADER
Definition: resource.h:30
#define IDB_WATERMARK
Definition: resource.h:4
static HWND hwndParent
Definition: cryptui.c:300
#define IDD_FINISHPAGE
Definition: resource.h:34
#define IDD_CHSOURCE
Definition: resource.h:22
#define IDS_CHSOURCE_TITLE
Definition: resource.h:34
#define IDS_SEARCHDRV_TITLE
Definition: resource.h:35
#define IDD_INSTALLDRV
Definition: resource.h:24
#define IDD_FIRSTPAGE
Definition: resource.h:29
#define IDD_NODRIVER
Definition: resource.h:25
#define IDS_INSTALLDRV_TITLE
Definition: resource.h:36
#define IDD_WELCOMEPAGE
Definition: resource.h:21
#define IDS_INSTALLWIZARDTITLE
Definition: resource.h:32
#define IDD_MAXIMUMPAGE
Definition: resource.h:30
#define IDD_NEEDREBOOT
Definition: resource.h:27
#define IDS_UPDATEWIZARDTITLE
Definition: resource.h:33
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
Definition: compobj.c:1964
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: compobj.c:2067
pKey DeleteObject()
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
static HFONT CreateTitleFont(VOID)
Definition: wizard.c:1353
static INT_PTR CALLBACK NoDriverDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:995
static INT_PTR CALLBACK NeedRebootDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:1195
static INT_PTR CALLBACK WelcomeDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:469
static INT_PTR CALLBACK FinishDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:1274
static INT_PTR CALLBACK InstallDrvDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:884
static INT_PTR CALLBACK SearchDrvDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:789
static INT_PTR CALLBACK CHSourceDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:615
static INT_PTR CALLBACK InstallFailedDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:1116
#define PROPSHEETHEADER
Definition: prsht.h:392
#define CreatePropertySheetPage
Definition: prsht.h:399
#define PSP_USETITLE
Definition: prsht.h:26
#define PSP_DEFAULT
Definition: prsht.h:22
#define PropertySheet
Definition: prsht.h:400
#define PROPSHEETPAGE
Definition: prsht.h:389
HRESULT hr
Definition: shlfolder.c:183
#define ZeroMemory
Definition: winbase.h:1712
#define MAKEINTRESOURCE
Definition: winuser.h:591

Referenced by DevInstallW(), and InstallDevInstEx().

◆ FindDriverProc()

static DWORD WINAPI FindDriverProc ( IN LPVOID  lpParam)
static

Definition at line 242 of file wizard.c.

244{
245 PDEVINSTDATA DevInstData;
246 BOOL result = FALSE;
247
248 DevInstData = (PDEVINSTDATA)lpParam;
249
250 result = ScanFoldersForDriver(DevInstData);
251
252 if (result)
253 {
254 PostMessage(DevInstData->hDialog, WM_SEARCH_FINISHED, 1, 0);
255 }
256 else
257 {
258 if (!DevInstData->bUpdate)
259 {
260 /* Update device configuration */
261 SetFailedInstall(DevInstData->hDevInfo,
262 &DevInstData->devInfoData,
263 TRUE);
264 }
265 PostMessage(DevInstData->hDialog, WM_SEARCH_FINISHED, 0, 0);
266 }
267 return 0;
268}
GLuint64EXT * result
Definition: glext.h:11304
static BOOL SetFailedInstall(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DevInfoData OPTIONAL, IN BOOLEAN Set)
Definition: wizard.c:63
BOOL ScanFoldersForDriver(IN PDEVINSTDATA DevInstData)
Definition: newdev.c:420
#define WM_SEARCH_FINISHED
SP_DEVINFO_DATA devInfoData
HDEVINFO hDevInfo
#define PostMessage
Definition: winuser.h:5844

Referenced by SearchDrvDlgProc().

◆ FinishDlgProc()

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

Definition at line 1274 of file wizard.c.

1279{
1280 PDEVINSTDATA DevInstData;
1282
1283 /* Retrieve pointer to the global setup data */
1284 DevInstData = (PDEVINSTDATA)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
1285
1286 switch (uMsg)
1287 {
1288 case WM_INITDIALOG:
1289 {
1290 HWND hwndControl;
1291
1292 /* Get pointer to the global setup data */
1293 DevInstData = (PDEVINSTDATA)((LPPROPSHEETPAGE)lParam)->lParam;
1294 SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (DWORD_PTR)DevInstData);
1295
1296 /* Center the wizard window */
1297 CenterWindow(GetParent(hwndDlg));
1298
1299 hwndControl = GetDlgItem(GetParent(hwndDlg), IDCANCEL);
1300 ShowWindow(hwndControl, SW_HIDE);
1301 EnableWindow(hwndControl, FALSE);
1302
1304 hwndDlg,
1305 IDC_DEVICE,
1306 WM_SETTEXT,
1307 0,
1308 (LPARAM)DevInstData->drvInfoData.Description);
1309
1310 /* Set title font */
1312 hwndDlg,
1314 WM_SETFONT,
1315 (WPARAM)DevInstData->hTitleFont,
1316 (LPARAM)TRUE);
1317 break;
1318 }
1319
1320 case WM_NOTIFY:
1321 {
1322 LPNMHDR lpnm = (LPNMHDR)lParam;
1323
1324 switch (lpnm->code)
1325 {
1326 case PSN_SETACTIVE:
1327 /* Enable the correct buttons on for the active page */
1329 break;
1330
1331 case PSN_WIZBACK:
1332 /* Handle a Back button click, if necessary */
1333 break;
1334
1335 case PSN_WIZFINISH:
1336 /* Handle a Finish button click, if necessary */
1337 break;
1338
1339 default:
1340 break;
1341 }
1342 break;
1343 }
1344
1345 default:
1346 break;
1347 }
1348
1349 return FALSE;
1350}
#define IDC_FINISHTITLE
Definition: resource.h:63
#define IDC_DEVICE
Definition: resource.h:8
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
#define PSWIZB_FINISH
Definition: prsht.h:155
#define PSN_WIZFINISH
Definition: prsht.h:122
#define PSN_WIZBACK
Definition: prsht.h:120
SP_DRVINFO_DATA_W drvInfoData
WCHAR Description[LINE_LEN]
Definition: setupapi.h:1016
#define SW_HIDE
Definition: winuser.h:771
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define IDCANCEL
Definition: winuser.h:834
#define WM_SETTEXT
Definition: winuser.h:1620
#define WM_SETFONT
Definition: winuser.h:1653

Referenced by DisplayWizard(), and InstallWizard().

◆ IncludePath()

static void IncludePath ( HWND  Dlg,
BOOL  Enabled 
)
static

Definition at line 568 of file wizard.c.

Referenced by AutoDriver(), and CHSourceDlgProc().

◆ InstallDriverProc()

static DWORD WINAPI InstallDriverProc ( IN LPVOID  lpParam)
static

Definition at line 271 of file wizard.c.

273{
274 PDEVINSTDATA DevInstData;
275 BOOL res;
276
277 DevInstData = (PDEVINSTDATA)lpParam;
278 res = InstallCurrentDriver(DevInstData);
279 PostMessage(DevInstData->hDialog, WM_INSTALL_FINISHED, res ? 0 : 1, 0);
280 return 0;
281}
GLuint res
Definition: glext.h:9613
BOOL InstallCurrentDriver(IN PDEVINSTDATA DevInstData)
Definition: newdev.c:529
#define WM_INSTALL_FINISHED

Referenced by InstallDrvDlgProc().

◆ InstallDrvDlgProc()

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

Definition at line 884 of file wizard.c.

889{
890 PDEVINSTDATA DevInstData;
892
893 /* Retrieve pointer to the global setup data */
894 DevInstData = (PDEVINSTDATA)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
895
896 switch (uMsg)
897 {
898 case WM_INITDIALOG:
899 {
900 HWND hwndControl;
901 DWORD dwStyle;
902
903 /* Get pointer to the global setup data */
904 DevInstData = (PDEVINSTDATA)((LPPROPSHEETPAGE)lParam)->lParam;
905 SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (DWORD_PTR)DevInstData);
906
907 DevInstData->hDialog = hwndDlg;
908 hwndControl = GetParent(hwndDlg);
909
910 /* Center the wizard window */
911 CenterWindow(hwndControl);
912
914 hwndDlg,
917 0,
918 (LPARAM)DevInstData->drvInfoData.Description);
919
920 /* Hide the system menu */
921 dwStyle = GetWindowLongPtr(hwndControl, GWL_STYLE);
922 SetWindowLongPtr(hwndControl, GWL_STYLE, dwStyle & ~WS_SYSMENU);
923 break;
924 }
925
927 {
929 hThread = 0;
930 if (wParam == 0)
931 {
932 SP_DEVINSTALL_PARAMS installParams;
933
934 SetFailedInstall(DevInstData->hDevInfo,
935 &DevInstData->devInfoData,
936 FALSE);
937
938 /* Should we reboot? */
939 installParams.cbSize = sizeof(SP_DEVINSTALL_PARAMS);
941 DevInstData->hDevInfo,
942 &DevInstData->devInfoData,
943 &installParams))
944 {
945 if (installParams.Flags & (DI_NEEDRESTART | DI_NEEDREBOOT))
946 {
948 }
949 else
951 break;
952 }
953 }
955 break;
956 }
957
958 case WM_NOTIFY:
959 {
960 LPNMHDR lpnm = (LPNMHDR)lParam;
961
962 switch (lpnm->code)
963 {
964 case PSN_SETACTIVE:
966 hThread = CreateThread(NULL, 0, InstallDriverProc, DevInstData, 0, &dwThreadId);
967 break;
968
969 case PSN_KILLACTIVE:
970 if (hThread != 0)
971 {
973 return TRUE;
974 }
975 break;
976
977 case PSN_WIZNEXT:
978 /* Handle a Next button click, if necessary */
979 break;
980
981 default:
982 break;
983 }
984 break;
985 }
986
987 default:
988 break;
989 }
990
991 return FALSE;
992}
#define CloseHandle
Definition: compat.h:739
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
DWORD dwThreadId
Definition: fdebug.c:31
static DWORD WINAPI InstallDriverProc(IN LPVOID lpParam)
Definition: wizard.c:271
HANDLE hThread
Definition: wizard.c:28
#define PSN_KILLACTIVE
Definition: prsht.h:116
#define DI_NEEDRESTART
Definition: setupapi.h:53
#define SetupDiGetDeviceInstallParams
Definition: setupapi.h:2599
SP_DEVINSTALL_PARAMS_A SP_DEVINSTALL_PARAMS
Definition: setupapi.h:1155
#define DI_NEEDREBOOT
Definition: setupapi.h:54
#define DWLP_MSGRESULT
Definition: winuser.h:873

Referenced by DisplayWizard().

◆ InstallFailedDlgProc()

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

Definition at line 1116 of file wizard.c.

1121{
1122 PDEVINSTDATA DevInstData;
1124
1125 /* Retrieve pointer to the global setup data */
1126 DevInstData = (PDEVINSTDATA)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
1127
1128 switch (uMsg)
1129 {
1130 case WM_INITDIALOG:
1131 {
1132 HWND hwndControl;
1133
1134 /* Get pointer to the global setup data */
1135 DevInstData = (PDEVINSTDATA)((LPPROPSHEETPAGE)lParam)->lParam;
1136 SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (DWORD_PTR)DevInstData);
1137
1138 /* Center the wizard window */
1139 CenterWindow(GetParent(hwndDlg));
1140
1141 hwndControl = GetDlgItem(GetParent(hwndDlg), IDCANCEL);
1142 ShowWindow(hwndControl, SW_HIDE);
1143 EnableWindow(hwndControl, FALSE);
1144
1146 hwndDlg,
1147 IDC_DEVICE,
1148 WM_SETTEXT,
1149 0,
1150 (LPARAM)DevInstData->drvInfoData.Description);
1151
1152 /* Set title font */
1154 hwndDlg,
1156 WM_SETFONT,
1157 (WPARAM)DevInstData->hTitleFont,
1158 (LPARAM)TRUE);
1159 break;
1160 }
1161
1162 case WM_NOTIFY:
1163 {
1164 LPNMHDR lpnm = (LPNMHDR)lParam;
1165
1166 switch (lpnm->code)
1167 {
1168 case PSN_SETACTIVE:
1169 /* Enable the correct buttons on for the active page */
1171 break;
1172
1173 case PSN_WIZBACK:
1174 /* Handle a Back button click, if necessary */
1175 break;
1176
1177 case PSN_WIZFINISH:
1178 /* Handle a Finish button click, if necessary */
1179 break;
1180
1181 default:
1182 break;
1183 }
1184 break;
1185 }
1186
1187 default:
1188 break;
1189 }
1190
1191 return FALSE;
1192}

Referenced by DisplayWizard().

◆ IsDeviceStarted()

static BOOL IsDeviceStarted ( IN DEVINST  DevInst,
IN HMACHINE  hMachine,
OUT BOOL IsEnabled 
)
static

Definition at line 148 of file wizard.c.

152{
153 CONFIGRET cr;
154 ULONG Status, ProblemNumber;
155 BOOL Ret = FALSE;
156
158 &Status,
159 &ProblemNumber,
160 DevInst,
161 0,
162 hMachine);
163 if (cr == CR_SUCCESS)
164 {
165 *IsEnabled = ((Status & DN_STARTED) != 0);
166 Ret = TRUE;
167 }
168
169 return Ret;
170}
#define DN_STARTED
Definition: cfg.h:121
return pProvider IsEnabled(ProviderControl)

Referenced by NoDriverDlgProc().

◆ NeedRebootDlgProc()

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

Definition at line 1195 of file wizard.c.

1200{
1201 PDEVINSTDATA DevInstData;
1203
1204 /* Retrieve pointer to the global setup data */
1205 DevInstData = (PDEVINSTDATA)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
1206
1207 switch (uMsg)
1208 {
1209 case WM_INITDIALOG:
1210 {
1211 HWND hwndControl;
1212
1213 /* Get pointer to the global setup data */
1214 DevInstData = (PDEVINSTDATA)((LPPROPSHEETPAGE)lParam)->lParam;
1215 SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (DWORD_PTR)DevInstData);
1216
1217 /* Center the wizard window */
1218 CenterWindow(GetParent(hwndDlg));
1219
1220 hwndControl = GetDlgItem(GetParent(hwndDlg), IDCANCEL);
1221 ShowWindow(hwndControl, SW_HIDE);
1222 EnableWindow(hwndControl, FALSE);
1223
1225 hwndDlg,
1226 IDC_DEVICE,
1227 WM_SETTEXT,
1228 0,
1229 (LPARAM)DevInstData->drvInfoData.Description);
1230
1231 /* Set title font */
1233 hwndDlg,
1235 WM_SETFONT,
1236 (WPARAM)DevInstData->hTitleFont,
1237 (LPARAM)TRUE);
1238 break;
1239 }
1240
1241 case WM_NOTIFY:
1242 {
1243 LPNMHDR lpnm = (LPNMHDR)lParam;
1244
1245 switch (lpnm->code)
1246 {
1247 case PSN_SETACTIVE:
1248 /* Enable the correct buttons on for the active page */
1250 break;
1251
1252 case PSN_WIZBACK:
1253 /* Handle a Back button click, if necessary */
1254 break;
1255
1256 case PSN_WIZFINISH:
1257 /* Handle a Finish button click, if necessary */
1258 break;
1259
1260 default:
1261 break;
1262 }
1263 break;
1264 }
1265
1266 default:
1267 break;
1268 }
1269
1270 return FALSE;
1271}

Referenced by DisplayWizard().

◆ NoDriverDlgProc()

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

Definition at line 995 of file wizard.c.

1000{
1001 PDEVINSTDATA DevInstData;
1002 HWND hwndControl;
1003
1005
1006 /* Get pointer to the global setup data */
1007 DevInstData = (PDEVINSTDATA)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
1008
1009 switch (uMsg)
1010 {
1011 case WM_INITDIALOG:
1012 {
1013 BOOL DisableableDevice = FALSE;
1014
1015 /* Get pointer to the global setup data */
1016 DevInstData = (PDEVINSTDATA)((LPPROPSHEETPAGE)lParam)->lParam;
1017 SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (DWORD_PTR)DevInstData);
1018
1019 /* Center the wizard window */
1020 CenterWindow(GetParent(hwndDlg));
1021
1022 hwndControl = GetDlgItem(GetParent(hwndDlg), IDCANCEL);
1023 ShowWindow(hwndControl, SW_HIDE);
1024 EnableWindow(hwndControl, FALSE);
1025
1026 /* Set title font */
1028 hwndDlg,
1030 WM_SETFONT,
1031 (WPARAM)DevInstData->hTitleFont,
1032 (LPARAM)TRUE);
1033
1034 /* disable the "do not show this dialog anymore" checkbox
1035 if the device cannot be disabled */
1037 DevInstData->devInfoData.DevInst,
1038 NULL,
1039 &DisableableDevice);
1041 GetDlgItem(hwndDlg, IDC_DONOTSHOWDLG),
1042 DisableableDevice);
1043 break;
1044 }
1045
1046 case WM_NOTIFY:
1047 {
1048 LPNMHDR lpnm = (LPNMHDR)lParam;
1049
1050 switch (lpnm->code)
1051 {
1052 case PSN_SETACTIVE:
1053 /* Enable the correct buttons on for the active page */
1055 break;
1056
1057 case PSN_WIZBACK:
1058 /* Handle a Back button click, if necessary */
1059 hwndControl = GetDlgItem(GetParent(hwndDlg), IDCANCEL);
1060 ShowWindow(hwndControl, SW_SHOW);
1061 EnableWindow(hwndControl, TRUE);
1063 return TRUE;
1064
1065 case PSN_WIZFINISH:
1066 {
1067 BOOL DisableableDevice = FALSE;
1068 BOOL IsStarted = FALSE;
1069
1070 if (CanDisableDevice(DevInstData->devInfoData.DevInst,
1071 NULL,
1072 &DisableableDevice) &&
1073 DisableableDevice &&
1075 DevInstData->devInfoData.DevInst,
1076 NULL,
1077 &IsStarted) &&
1078 !IsStarted &&
1080 hwndDlg,
1083 (WPARAM)0, (LPARAM)0) == BST_CHECKED)
1084 {
1085 /* disable the device */
1087 DevInstData->hDevInfo,
1088 &DevInstData->devInfoData,
1089 FALSE,
1090 0,
1091 NULL);
1092 }
1093 else
1094 {
1095 SetFailedInstall(DevInstData->hDevInfo,
1096 &DevInstData->devInfoData,
1097 FALSE);
1098 }
1099 break;
1100 }
1101
1102 default:
1103 break;
1104 }
1105 break;
1106 }
1107
1108 default:
1109 break;
1110 }
1111
1112 return FALSE;
1113}
#define IDC_DONOTSHOWDLG
Definition: resource.h:11
static BOOL StartDevice(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DevInfoData OPTIONAL, IN BOOL bEnable, IN DWORD HardwareProfile OPTIONAL, OUT BOOL *bNeedReboot OPTIONAL)
Definition: wizard.c:173
static BOOL IsDeviceStarted(IN DEVINST DevInst, IN HMACHINE hMachine, OUT BOOL *IsEnabled)
Definition: wizard.c:148
static BOOL CanDisableDevice(IN DEVINST DevInst, IN HMACHINE hMachine, OUT BOOL *CanDisable)
Definition: wizard.c:124
#define SW_SHOW
Definition: winuser.h:778
#define BST_CHECKED
Definition: winuser.h:197
#define BM_GETCHECK
Definition: winuser.h:1921

Referenced by DisplayWizard().

◆ PopulateCustomPathCombo()

static VOID PopulateCustomPathCombo ( IN HWND  hwndCombo)
static

Definition at line 284 of file wizard.c.

286{
287 HKEY hKey = NULL;
288 DWORD dwRegType;
289 DWORD dwPathLength = 0;
292 LONG rc;
293
294 (void)ComboBox_ResetContent(hwndCombo);
295
296 /* RegGetValue would have been better... */
297 rc = RegOpenKeyEx(
300 0,
302 &hKey);
303 if (rc != ERROR_SUCCESS)
304 {
305 TRACE("RegOpenKeyEx() failed with error 0x%lx\n", rc);
306 goto cleanup;
307 }
308 rc = RegQueryValueExW(
309 hKey,
310 L"Installation Sources",
311 NULL,
312 &dwRegType,
313 NULL,
314 &dwPathLength);
315 if (rc != ERROR_SUCCESS || dwRegType != REG_MULTI_SZ)
316 {
317 TRACE("RegQueryValueEx() failed with error 0x%lx\n", rc);
318 goto cleanup;
319 }
320
321 /* Allocate enough space to add 2 NULL chars at the end of the string */
322 Buffer = HeapAlloc(GetProcessHeap(), 0, dwPathLength + 2 * sizeof(WCHAR));
323 if (!Buffer)
324 {
325 TRACE("HeapAlloc() failed\n");
326 goto cleanup;
327 }
328 rc = RegQueryValueExW(
329 hKey,
330 L"Installation Sources",
331 NULL,
332 NULL,
333 (LPBYTE)Buffer,
334 &dwPathLength);
335 if (rc != ERROR_SUCCESS)
336 {
337 TRACE("RegQueryValueEx() failed with error 0x%lx\n", rc);
338 goto cleanup;
339 }
340
341 Buffer[dwPathLength / sizeof(WCHAR)] = UNICODE_NULL;
342 Buffer[dwPathLength / sizeof(WCHAR) + 1] = UNICODE_NULL;
343
344 /* Populate combo box */
345 for (Path = Buffer; *Path; Path += wcslen(Path) + 1)
346 {
347 (void)ComboBox_AddString(hwndCombo, Path);
348 if (Path == Buffer)
349 (void)ComboBox_SetCurSel(hwndCombo, 0);
350 }
351
352cleanup:
353 if (hKey != NULL)
356}
PRTL_UNICODE_STRING_BUFFER Path
#define RegCloseKey(hKey)
Definition: registry.h:49
Definition: bufpool.h:45
#define ERROR_SUCCESS
Definition: deptool.c:10
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4103
#define HeapAlloc
Definition: compat.h:733
static void cleanup(void)
Definition: main.c:1335
FxAutoRegKey hKey
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define KEY_QUERY_VALUE
Definition: nt_native.h:1016
#define REG_MULTI_SZ
Definition: nt_native.h:1501
#define UNICODE_NULL
long LONG
Definition: pedump.c:60
#define REGSTR_KEY_SETUP
Definition: regstr.h:105
#define REGSTR_PATH_SETUP
Definition: regstr.h:23
#define TRACE(s)
Definition: solgame.cpp:4
unsigned char * LPBYTE
Definition: typedefs.h:53
#define ComboBox_SetCurSel(hwndCtl, index)
Definition: windowsx.h:66
#define ComboBox_AddString(hwndCtl, lpsz)
Definition: windowsx.h:41
#define ComboBox_ResetContent(hwndCtl)
Definition: windowsx.h:63
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
#define RegOpenKeyEx
Definition: winreg.h:520
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185

Referenced by CHSourceDlgProc().

◆ SaveCustomPath()

static VOID SaveCustomPath ( IN HWND  hwndCombo)
static

Definition at line 359 of file wizard.c.

361{
362 LPWSTR CustomPath = NULL;
363 DWORD CustomPathLength;
365 LPWSTR pBuffer; /* Pointer into Buffer */
366 int ItemsCount, Length;
367 int i;
368 DWORD TotalLength = 0;
369 BOOL UseCustomPath = TRUE;
370 HKEY hKey = NULL;
371 LONG rc;
372
373 /* Get custom path */
374 Length = ComboBox_GetTextLength(hwndCombo) + 1;
375 CustomPath = HeapAlloc(GetProcessHeap(), 0, Length * sizeof(WCHAR));
376 if (!CustomPath)
377 {
378 TRACE("HeapAlloc() failed\n");
379 goto cleanup;
380 }
381 CustomPathLength = GetWindowTextW(hwndCombo, CustomPath, Length) + 1;
382
383 /* Calculate length of the buffer */
384 ItemsCount = ComboBox_GetCount(hwndCombo);
385 if (ItemsCount == CB_ERR)
386 {
387 TRACE("ComboBox_GetCount() failed\n");
388 goto cleanup;
389 }
390 for (i = 0; i < ItemsCount; i++)
391 {
392 Length = ComboBox_GetLBTextLen(hwndCombo, i);
393 if (Length == CB_ERR)
394 {
395 TRACE("ComboBox_GetLBTextLen() failed\n");
396 goto cleanup;
397 }
398 TotalLength += Length + 1;
399 }
400 TotalLength++; /* Final NULL char */
401
402 /* Allocate buffer */
403 Buffer = HeapAlloc(GetProcessHeap(), 0, (CustomPathLength + TotalLength + 1) * sizeof(WCHAR));
404 if (!Buffer)
405 {
406 TRACE("HeapAlloc() failed\n");
407 goto cleanup;
408 }
409
410 /* Fill the buffer */
411 pBuffer = &Buffer[CustomPathLength];
412 for (i = 0; i < ItemsCount; i++)
413 {
414 Length = ComboBox_GetLBText(hwndCombo, i, pBuffer);
415 if (Length == CB_ERR)
416 {
417 TRACE("ComboBox_GetLBText() failed\n");
418 goto cleanup;
419 }
420 else if (UseCustomPath && _wcsicmp(CustomPath, pBuffer) == 0)
421 UseCustomPath = FALSE;
422 pBuffer += 1 + Length;
423 }
424 *pBuffer = '\0'; /* Add final NULL char */
425
426 if (!UseCustomPath)
427 {
428 /* Nothing to save to registry */
429 goto cleanup;
430 }
431
432 TotalLength += CustomPathLength;
433 wcscpy(Buffer, CustomPath);
434
435 /* Save the buffer */
436 /* RegSetKeyValue would have been better... */
437 rc = RegOpenKeyEx(
440 0,
442 &hKey);
443 if (rc != ERROR_SUCCESS)
444 {
445 TRACE("RegOpenKeyEx() failed with error 0x%lx\n", rc);
446 goto cleanup;
447 }
448 rc = RegSetValueExW(
449 hKey,
450 L"Installation Sources",
451 0,
453 (const BYTE*)Buffer,
454 TotalLength * sizeof(WCHAR));
455 if (rc != ERROR_SUCCESS)
456 {
457 TRACE("RegSetValueEx() failed with error 0x%lx\n", rc);
458 goto cleanup;
459 }
460
461cleanup:
462 if (hKey != NULL)
464 HeapFree(GetProcessHeap(), 0, CustomPath);
466}
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:4882
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
#define KEY_SET_VALUE
Definition: nt_native.h:1017
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
PVOID pBuffer
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
_In_ ULONG TotalLength
Definition: usbdlib.h:158
#define ComboBox_GetTextLength(hwndCtl)
Definition: windowsx.h:59
#define ComboBox_GetCount(hwndCtl)
Definition: windowsx.h:48
#define ComboBox_GetLBText(hwndCtl, index, lpszBuffer)
Definition: windowsx.h:56
#define ComboBox_GetLBTextLen(hwndCtl, index)
Definition: windowsx.h:57
unsigned char BYTE
Definition: xxhash.c:193

Referenced by CHSourceDlgProc().

◆ SearchDrvDlgProc()

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

Definition at line 789 of file wizard.c.

794{
795 PDEVINSTDATA DevInstData;
797
798 /* Retrieve pointer to the global setup data */
799 DevInstData = (PDEVINSTDATA)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
800
801 switch (uMsg)
802 {
803 case WM_INITDIALOG:
804 {
805 HWND hwndControl;
806 DWORD dwStyle;
807
808 /* Get pointer to the global setup data */
809 DevInstData = (PDEVINSTDATA)((LPPROPSHEETPAGE)lParam)->lParam;
810 SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (DWORD_PTR)DevInstData);
811
812 DevInstData->hDialog = hwndDlg;
813 hwndControl = GetParent(hwndDlg);
814
815 /* Center the wizard window */
816 CenterWindow(hwndControl);
817
819 hwndDlg,
822 0,
823 (LPARAM)DevInstData->buffer);
824
825 /* Hide the system menu */
826 dwStyle = GetWindowLongPtr(hwndControl, GWL_STYLE);
827 SetWindowLongPtr(hwndControl, GWL_STYLE, dwStyle & ~WS_SYSMENU);
828 break;
829 }
830
832 {
834 hThread = 0;
835 if (wParam == 0)
837 else
839 break;
840 }
841
842 case WM_NOTIFY:
843 {
844 LPNMHDR lpnm = (LPNMHDR)lParam;
845
846 switch (lpnm->code)
847 {
848 case PSN_SETACTIVE:
850 /* Yes, we can safely ignore the problem (if any) */
852 DevInstData->hDevInfo,
853 &DevInstData->devInfoData,
855 hThread = CreateThread(NULL, 0, FindDriverProc, DevInstData, 0, &dwThreadId);
856 break;
857
858 case PSN_KILLACTIVE:
859 if (hThread != 0)
860 {
862 return TRUE;
863 }
864 break;
865
866 case PSN_WIZNEXT:
867 /* Handle a Next button click, if necessary */
868 break;
869
870 default:
871 break;
872 }
873 break;
874 }
875
876 default:
877 break;
878 }
879
880 return FALSE;
881}
BOOL WINAPI SetupDiDestroyDriverInfoList(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN DWORD DriverType)
Definition: driver.c:1208
static DWORD WINAPI FindDriverProc(IN LPVOID lpParam)
Definition: wizard.c:242
#define SPDIT_COMPATDRIVER
Definition: setupapi.h:506

Referenced by DisplayWizard().

◆ SetFailedInstall()

static BOOL SetFailedInstall ( IN HDEVINFO  DeviceInfoSet,
IN PSP_DEVINFO_DATA DevInfoData  OPTIONAL,
IN BOOLEAN  Set 
)
static

Definition at line 63 of file wizard.c.

67{
68 DWORD dwType, dwSize, dwFlags = 0;
69
70 dwSize = sizeof(dwFlags);
72 DevInfoData,
74 &dwType,
75 (PBYTE)&dwFlags,
76 dwSize,
77 &dwSize))
78 {
79 return FALSE;
80 }
81
82 if (Set)
84 else
85 dwFlags &= ~CONFIGFLAG_FAILEDINSTALL;
86
88 DevInfoData,
90 (PBYTE)&dwFlags,
91 dwSize))
92 {
93
94 return FALSE;
95 }
96
97 if (Set)
98 {
99 /* Set the 'Unknown' device class */
100 PWSTR pszUnknown = L"Unknown";
102 DevInfoData,
104 (PBYTE)pszUnknown,
105 (wcslen(pszUnknown) + 1) * sizeof(WCHAR));
106
107 PWSTR pszUnknownGuid = L"{4D36E97E-E325-11CE-BFC1-08002BE10318}";
109 DevInfoData,
111 (PBYTE)pszUnknownGuid,
112 (wcslen(pszUnknownGuid) + 1) * sizeof(WCHAR));
113
114 /* Set device problem code CM_PROB_FAILED_INSTALL */
115 CM_Set_DevNode_Problem(DevInfoData->DevInst,
118 }
119
120 return TRUE;
121}
#define CM_PROB_FAILED_INSTALL
Definition: cfg.h:58
#define CM_SET_DEVNODE_PROBLEM_OVERRIDE
Definition: cfgmgr32.h:807
CONFIGRET WINAPI CM_Set_DevNode_Problem(_In_ DEVINST dnDevInst, _In_ ULONG ulProblem, _In_ ULONG ulFlags)
Definition: cfgmgr.c:7878
BOOL WINAPI SetupDiSetDeviceRegistryPropertyW(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Property, const BYTE *PropertyBuffer, DWORD PropertyBufferSize)
Definition: devinst.c:3452
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
static BOOL Set
Definition: pageheap.c:10
BYTE * PBYTE
Definition: pedump.c:66
#define CONFIGFLAG_FAILEDINSTALL
Definition: regstr.h:396
#define SPDRP_CLASS
Definition: setupapi.h:514
#define SetupDiGetDeviceRegistryProperty
Definition: setupapi.h:2603
#define SPDRP_CLASSGUID
Definition: setupapi.h:515
#define SetupDiSetDeviceRegistryProperty
Definition: setupapi.h:2620
#define SPDRP_CONFIGFLAGS
Definition: setupapi.h:517
uint16_t * PWSTR
Definition: typedefs.h:56
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1176

Referenced by FindDriverProc(), InstallDrvDlgProc(), NoDriverDlgProc(), and WelcomeDlgProc().

◆ StartDevice()

static BOOL StartDevice ( IN HDEVINFO  DeviceInfoSet,
IN PSP_DEVINFO_DATA DevInfoData  OPTIONAL,
IN BOOL  bEnable,
IN DWORD HardwareProfile  OPTIONAL,
OUT BOOL *bNeedReboot  OPTIONAL 
)
static

Definition at line 173 of file wizard.c.

179{
182 DWORD LastErr;
183 BOOL Ret = FALSE;
184
187 pcp.HwProfile = HardwareProfile;
188
189 if (bEnable)
190 {
191 /* try to enable the device on the global profile */
194
195 /* ignore errors */
196 LastErr = GetLastError();
199 DevInfoData,
201 sizeof(SP_PROPCHANGE_PARAMS)))
202 {
206 DevInfoData);
207 }
208 SetLastError(LastErr);
209 }
210
211 /* try config-specific */
214
217 DevInfoData,
219 sizeof(SP_PROPCHANGE_PARAMS)) &&
222 DevInfoData))
223 {
224 dp.cbSize = sizeof(SP_DEVINSTALL_PARAMS);
227 DevInfoData,
228 &dp))
229 {
230 if (bNeedReboot != NULL)
231 {
232 *bNeedReboot = ((dp.Flags & (DI_NEEDRESTART | DI_NEEDREBOOT)) != 0);
233 }
234
235 Ret = TRUE;
236 }
237 }
238 return Ret;
239}
#define SetLastError(x)
Definition: compat.h:752
BOOL WINAPI SetupDiCallClassInstaller(DI_FUNCTION InstallFunction, HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData)
Definition: devinst.c:4024
struct _SP_CLASSINSTALL_HEADER SP_CLASSINSTALL_HEADER
#define SetupDiSetClassInstallParams
Definition: setupapi.h:2617
#define DICS_DISABLE
Definition: setupapi.h:114
#define DICS_ENABLE
Definition: setupapi.h:112
#define DICS_FLAG_CONFIGSPECIFIC
Definition: setupapi.h:115
#define DICS_FLAG_GLOBAL
Definition: setupapi.h:113
#define DIF_PROPERTYCHANGE
Definition: setupapi.h:137
DI_FUNCTION InstallFunction
Definition: setupapi.h:904
SP_CLASSINSTALL_HEADER ClassInstallHeader
Definition: setupapi.h:916
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
_In_ BOOL bEnable
Definition: winddi.h:3426

Referenced by AddDevice(), NoDriverDlgProc(), PcAddAdapterDevice(), and PciPdoIrpStartDevice().

◆ WelcomeDlgProc()

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

Definition at line 469 of file wizard.c.

474{
475 PDEVINSTDATA DevInstData;
477
478 /* Retrieve pointer to the global setup data */
479 DevInstData = (PDEVINSTDATA)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
480
481 switch (uMsg)
482 {
483 case WM_INITDIALOG:
484 {
485 HWND hwndControl;
486 DWORD dwStyle;
487
488 /* Get pointer to the global setup data */
489 DevInstData = (PDEVINSTDATA)((LPPROPSHEETPAGE)lParam)->lParam;
490 SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (DWORD_PTR)DevInstData);
491
492 hwndControl = GetParent(hwndDlg);
493
494 /* Center the wizard window */
495 CenterWindow(hwndControl);
496
497 /* Hide the system menu */
498 dwStyle = GetWindowLongPtr(hwndControl, GWL_STYLE);
499 SetWindowLongPtr(hwndControl, GWL_STYLE, dwStyle & ~WS_SYSMENU);
500
501 /* Set title font */
503 hwndDlg,
506 (WPARAM)DevInstData->hTitleFont,
507 (LPARAM)TRUE);
508
510 hwndDlg,
513 0,
514 (LPARAM)DevInstData->buffer);
515
517 hwndDlg,
520 (WPARAM)TRUE,
521 (LPARAM)0);
522
523 if (!DevInstData->bUpdate)
524 {
525 SetFailedInstall(DevInstData->hDevInfo,
526 &DevInstData->devInfoData,
527 TRUE);
528 }
529 break;
530 }
531
532 case WM_NOTIFY:
533 {
534 LPNMHDR lpnm = (LPNMHDR)lParam;
535
536 switch (lpnm->code)
537 {
538 case PSN_SETACTIVE:
539 /* Enable the Next button */
541 break;
542
543 case PSN_WIZNEXT:
544 /* Handle a Next button click, if necessary */
546 {
547 if (PrepareFoldersToScan(DevInstData, TRUE, FALSE, NULL))
549 else
551 }
552 return TRUE;
553
554 default:
555 break;
556 }
557 break;
558 }
559
560 default:
561 break;
562 }
563
564 return FALSE;
565}
#define IDC_WELCOMETITLE
Definition: resource.h:16
#define IDC_RADIO_AUTO
Definition: resource.h:9

Referenced by DisplayWizard(), and InstallWizard().

Variable Documentation

◆ hThread

HANDLE hThread

Definition at line 28 of file wizard.c.

Referenced by _DoDLLInjection(), _ServiceMain(), AcceptConnections(), addr_to_linear(), check_thread_instance(), CommonInstall(), CreateLobbyMessageReceptionThread(), CreateRemoteThread(), CreateServers(), CreateServiceThread(), CSysTray::CreateSysTrayThread(), CreateTestThread(), CsrAddStaticServerThread(), CsrApiPortInitialize(), CsrCreateProcess(), CsrCreateRemoteThread(), CsrCreateThread(), CsrExecServerThread(), CsrpCheckRequestThreads(), CsrSbCreateSession(), CtfImmSetLangBand(), DbgUiIssueRemoteBreakin(), DialogProc_0(), DialogProc_1(), DoFormatDrive(), EndLocalThread(), ExpCreateWorkerThread(), fetch_thread_info(), FormatDriveDlg(), GetExitCodeThread(), GetThreadContext(), GetThreadIOPendingFlag(), GetThreadPriority(), GetThreadPriorityBoost(), GetThreadSelectorEntry(), GetThreadTimes(), GuiConsoleInputThread(), HandleLogoff(), HandleShutdown(), i386_get_addr(), IDirectSoundCaptureBufferImpl_Start(), init(), COutputPin::InitializeIOThread(), InitiateSoundStreaming(), InitProgressDialog(), InstallDrvDlgProc(), CZipFolder::InvokeCommand(), JustDoIt(), LocalScheduleJob(), MailSlotReader(), main(), mmTaskCreate(), NtOpenThread(), Window::OnCommand(), OnInitDialog(), OpenPropSheet(), PlayLogonSound(), PrintThreads(), proc_PlaySoundAsync(), ProgressDlg::ProcessWindowMessage(), PspCreateThread(), QueueUserAPC(), CDeviceView::Refresh(), ResumeThread(), RunSetup(), CZipCreator::runThread(), SaveThreadHandle(), SearchDrvDlgProc(), ServiceInit(), ServiceMain(), SetThreadAffinityMask(), SetThreadContext(), SetThreadIdealProcessor(), SetThreadPriority(), SetThreadPriorityBoost(), SetThreadToken(), SHCreateThread(), SlideWindow(), StackWalk(), StackWalk64(), START_TEST(), CProgressDialog::StartProgressDialog(), StartSystemShutdown(), CAsyncLoadIcon::StartTasks(), StartTestCORE10188(), CUTBLangBarDlg::StartThread(), SuspendThread(), TerminateThread(), test_attach_input(), test_CreateRemoteThread(), test_DragQueryFile(), test_events(), test_http_connection(), test_ImmThreads(), test_interthread_messages(), test_menu_input(), test_pack_CREATE_PROCESS_DEBUG_INFO(), test_pack_CREATE_THREAD_DEBUG_INFO(), test_pack_PROCESS_INFORMATION(), test_QueryInformationJobObject(), test_runner(), Test_SimpleParameters(), test_smresult(), test_thread_handle_close(), TestMessages(), TestMultipleUserAPCs(), WdmAudSetMixerDeviceFormatByLegacy(), WinMain(), WlxAssignShellProtection(), wmain(), WriterThread::WriterThread(), and wWinMain().