ReactOS  0.4.15-dev-488-gc7a1924
hdwwiz.c File Reference
#include "resource.h"
#include "hdwwiz.h"
Include dependency graph for hdwwiz.c:

Go to the source code of this file.

Typedefs

typedef BOOL(WINAPIPINSTALL_NEW_DEVICE) (HWND, LPGUID, PDWORD)
 

Functions

static HFONT CreateTitleFont (VOID)
 
static INT_PTR CALLBACK StartPageDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static INT_PTR CALLBACK SearchPageDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static INT_PTR CALLBACK IsConnectedPageDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static INT_PTR CALLBACK FinishPageDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static INT_PTR CALLBACK NotConnectedPageDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static VOID TrimGuidString (LPWSTR szString, LPWSTR szNewString)
 
static VOID InitProbeListPage (HWND hwndDlg)
 
static INT_PTR CALLBACK ProbeListPageDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static INT_PTR CALLBACK SelectWayPageDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static INT_PTR CALLBACK DevStatusPageDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static INT EnumDeviceClasses (INT ClassIndex, LPWSTR DevClassName, LPWSTR DevClassDesc, BOOL *DevPresent, INT *ClassImage)
 
static VOID InitHardWareTypesPage (HWND hwndDlg)
 
static INT_PTR CALLBACK HdTypesPageDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static INT_PTR CALLBACK ProgressPageDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static int CALLBACK PropSheetProc (HWND hwndDlg, UINT uMsg, LPARAM lParam)
 
static VOID HardwareWizardInit (HWND hwnd)
 
BOOL WINAPI InstallNewDevice (HWND hwndParent, LPGUID ClassGuid, PDWORD pReboot)
 
VOID WINAPI AddHardwareWizard (HWND hwnd, LPWSTR lpName)
 
LONG CALLBACK CPlApplet (HWND hwndCpl, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
 
BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpvReserved)
 

Variables

HINSTANCE hApplet = NULL
 
HFONT hTitleFont
 
SP_CLASSIMAGELIST_DATA ImageListData
 
PWSTR pDeviceStatusText
 
HANDLE hProcessHeap
 
HDEVINFO hDevInfoTypes
 

Typedef Documentation

◆ PINSTALL_NEW_DEVICE

typedef BOOL(WINAPI * PINSTALL_NEW_DEVICE) (HWND, LPGUID, PDWORD)

Definition at line 39 of file hdwwiz.c.

Function Documentation

◆ AddHardwareWizard()

VOID WINAPI AddHardwareWizard ( HWND  hwnd,
LPWSTR  lpName 
)

Definition at line 934 of file hdwwiz.c.

935 {
936  if (lpName != NULL)
937  {
938  DPRINT1("No support of remote installation yet!\n");
939  return;
940  }
941 
943 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
_In_ LPCSTR lpName
Definition: winbase.h:2752
smooth NULL
Definition: ftsmooth.c:416
static VOID HardwareWizardInit(HWND hwnd)
Definition: hdwwiz.c:794
#define DPRINT1
Definition: precomp.h:8

Referenced by CPlApplet().

◆ CPlApplet()

LONG CALLBACK CPlApplet ( HWND  hwndCpl,
UINT  uMsg,
LPARAM  lParam1,
LPARAM  lParam2 
)

Definition at line 947 of file hdwwiz.c.

948 {
949  switch (uMsg)
950  {
951  case CPL_INIT:
952  return TRUE;
953 
954  case CPL_GETCOUNT:
955  return 1;
956 
957  case CPL_INQUIRE:
958  {
959  CPLINFO *CPlInfo = (CPLINFO*)lParam2;
960  CPlInfo->lData = 0;
961  CPlInfo->idIcon = IDI_CPLICON;
962  CPlInfo->idName = IDS_CPLNAME;
963  CPlInfo->idInfo = IDS_CPLDESCRIPTION;
964  }
965  break;
966 
967  case CPL_DBLCLK:
968  AddHardwareWizard(hwndCpl, NULL);
969  break;
970  }
971 
972  return FALSE;
973 }
#define TRUE
Definition: types.h:120
Definition: cpl.h:24
int idInfo
Definition: cpl.h:27
int idIcon
Definition: cpl.h:25
#define CPL_DBLCLK
Definition: cpl.h:16
#define IDS_CPLNAME
Definition: resource.h:8
VOID WINAPI AddHardwareWizard(HWND hwnd, LPWSTR lpName)
Definition: hdwwiz.c:934
smooth NULL
Definition: ftsmooth.c:416
#define IDS_CPLDESCRIPTION
Definition: resource.h:9
#define IDI_CPLICON
Definition: resource.h:4
#define CPL_INIT
Definition: cpl.h:12
#define CPL_INQUIRE
Definition: cpl.h:14
LONG_PTR lData
Definition: cpl.h:28
int idName
Definition: cpl.h:26
#define CPL_GETCOUNT
Definition: cpl.h:13

◆ CreateTitleFont()

static HFONT CreateTitleFont ( VOID  )
static

Definition at line 45 of file hdwwiz.c.

46 {
47  NONCLIENTMETRICS ncm;
48  LOGFONT LogFont;
49  HDC hdc;
50  INT FontSize;
51  HFONT hFont;
52 
53  ncm.cbSize = sizeof(NONCLIENTMETRICS);
54  SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0);
55 
56  LogFont = ncm.lfMessageFont;
57  LogFont.lfWeight = FW_BOLD;
58  wcscpy(LogFont.lfFaceName, L"MS Shell Dlg");
59 
60  hdc = GetDC(NULL);
61  FontSize = 12;
62  LogFont.lfHeight = 0 - GetDeviceCaps (hdc, LOGPIXELSY) * FontSize / 72;
63  hFont = CreateFontIndirect(&LogFont);
64  ReleaseDC(NULL, hdc);
65 
66  return hFont;
67 }
HDC WINAPI GetDC(_In_opt_ HWND)
static HDC
Definition: imagelist.c:92
#define SystemParametersInfo
Definition: winuser.h:5833
int32_t INT
Definition: typedefs.h:57
HFONT hFont
Definition: main.c:53
LONG lfHeight
Definition: dimm.idl:42
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
LONG lfWeight
Definition: dimm.idl:46
smooth NULL
Definition: ftsmooth.c:416
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
static const WCHAR L[]
Definition: oid.c:1250
HDC hdc
Definition: main.c:9
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
#define FW_BOLD
Definition: wingdi.h:377
#define CreateFontIndirect
Definition: wingdi.h:4443
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
CHAR lfFaceName[LF_FACESIZE]
Definition: dimm.idl:55
#define LOGPIXELSY
Definition: wingdi.h:718

Referenced by HardwareWizardInit().

◆ DevStatusPageDlgProc()

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

Definition at line 514 of file hdwwiz.c.

515 {
516  switch (uMsg)
517  {
518  case WM_INITDIALOG:
519  {
520  /* Set title font */
522  }
523  break;
524 
525  case WM_NOTIFY:
526  {
527  LPNMHDR lpnm = (LPNMHDR)lParam;
528 
529  switch (lpnm->code)
530  {
531  case PSN_SETACTIVE:
532  {
533  /* Set status text */
535 
537  }
538  break;
539 
540  case PSN_WIZBACK:
541  {
543  return TRUE;
544  }
545  }
546  }
547  break;
548  }
549 
550  return FALSE;
551 }
#define IDC_HWSTATUSEDIT
Definition: resource.h:52
PWSTR pDeviceStatusText
Definition: hdwwiz.c:35
#define TRUE
Definition: types.h:120
UINT_PTR WPARAM
Definition: windef.h:207
#define SendDlgItemMessage
Definition: winuser.h:5817
#define PSN_SETACTIVE
Definition: prsht.h:115
#define SetWindowLongPtr
Definition: treelist.c:70
#define DWLP_MSGRESULT
Definition: winuser.h:864
struct tagNMHDR * LPNMHDR
HFONT hTitleFont
Definition: hdwwiz.c:33
UINT code
Definition: winuser.h:3134
LONG_PTR LPARAM
Definition: windef.h:208
#define PropSheet_SetWizButtons(d, f)
Definition: prsht.h:357
#define IDC_FINISHTITLE
Definition: resource.h:60
#define PSWIZB_FINISH
Definition: prsht.h:155
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define PSWIZB_BACK
Definition: prsht.h:153
HWND WINAPI GetParent(_In_ HWND)
#define IDD_PROBELISTPAGE
Definition: resource.h:29
#define SetWindowText
Definition: winuser.h:5832
#define WM_SETFONT
Definition: winuser.h:1632
#define PSN_WIZBACK
Definition: prsht.h:120
#define WM_INITDIALOG
Definition: winuser.h:1721
LPARAM lParam
Definition: combotst.c:139
#define WM_NOTIFY
Definition: richedit.h:61

Referenced by HardwareWizardInit().

◆ DllMain()

BOOL WINAPI DllMain ( HINSTANCE  hinstDLL,
DWORD  dwReason,
LPVOID  lpvReserved 
)

Definition at line 976 of file hdwwiz.c.

977 {
979 
980  switch (dwReason)
981  {
982  case DLL_PROCESS_ATTACH:
983  hApplet = hinstDLL;
985  DisableThreadLibraryCalls(hinstDLL);
986  break;
987  }
988 
989  return TRUE;
990 }
#define TRUE
Definition: types.h:120
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:323
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
#define DLL_PROCESS_ATTACH
Definition: compat.h:120
static IN DWORD IN LPVOID lpvReserved
DWORD dwReason
Definition: misc.cpp:154
HINSTANCE hApplet
Definition: hdwwiz.c:32
#define GetProcessHeap()
Definition: compat.h:404
HANDLE hProcessHeap
Definition: hdwwiz.c:36

◆ EnumDeviceClasses()

static INT EnumDeviceClasses ( INT  ClassIndex,
LPWSTR  DevClassName,
LPWSTR  DevClassDesc,
BOOL DevPresent,
INT ClassImage 
)
static

Definition at line 554 of file hdwwiz.c.

559 {
560  GUID ClassGuid;
561  HKEY KeyClass;
562  WCHAR ClassName[MAX_STR_SIZE];
564  UINT Ret;
565 
566  *DevPresent = FALSE;
567  *DevClassName = L'\0';
568 
569  Ret = CM_Enumerate_Classes(ClassIndex,
570  &ClassGuid,
571  0);
572  if (Ret != CR_SUCCESS)
573  {
574  /* All classes enumerated */
575  if(Ret == CR_NO_SUCH_VALUE)
576  {
578  return -1;
579  }
580 
581  if (Ret == CR_INVALID_DATA)
582  {
583  ; /* FIXME: What should we do here? */
584  }
585 
586  /* Handle other errors... */
587  }
588 
589  if (SetupDiClassNameFromGuid(&ClassGuid,
590  ClassName,
591  RequiredSize,
592  &RequiredSize))
593  {
594  lstrcpy(DevClassName, ClassName);
595  }
596 
598  &ClassGuid,
599  ClassImage))
600  {
601  /* FIXME: Can we do this?
602  * Set the blank icon: IDI_SETUPAPI_BLANK = 41
603  * It'll be image 24 in the imagelist */
604  *ClassImage = 24;
605  }
606 
607  /* Get device info for all devices of a particular class */
608  hDevInfoTypes = SetupDiGetClassDevs(&ClassGuid,
609  NULL,
610  NULL,
611  DIGCF_PRESENT);
613  {
615  return 0;
616  }
617 
618  KeyClass = SetupDiOpenClassRegKeyEx(&ClassGuid,
621  NULL,
622  0);
623  if (KeyClass != INVALID_HANDLE_VALUE)
624  {
625 
627 
628  if (RegQueryValue(KeyClass,
629  NULL,
630  DevClassDesc,
631  &dwSize) != ERROR_SUCCESS)
632  {
633  *DevClassDesc = L'\0';
634  }
635  }
636  else
637  {
638  return -3;
639  }
640 
641  *DevPresent = TRUE;
642 
643  RegCloseKey(KeyClass);
644 
645  return 0;
646 }
#define MAXIMUM_ALLOWED
Definition: nt_native.h:83
#define TRUE
Definition: types.h:120
#define ERROR_SUCCESS
Definition: deptool.c:10
CONFIGRET WINAPI CM_Enumerate_Classes(_In_ ULONG ulClassIndex, _Out_ LPGUID ClassGuid, _In_ ULONG ulFlags)
Definition: cfgmgr.c:1984
#define INVALID_HANDLE_VALUE
Definition: compat.h:400
#define CR_NO_SUCH_VALUE
Definition: cfgmgr32.h:883
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
long LONG
Definition: pedump.c:60
#define CR_SUCCESS
Definition: cfgmgr32.h:842
#define DIOCR_INSTALLER
Definition: setupapi.h:176
smooth NULL
Definition: ftsmooth.c:416
_Inout_ PRTL_BUFFER _In_ SIZE_T RequiredSize
#define MAX_STR_SIZE
Definition: hdwwiz.h:21
#define SetupDiOpenClassRegKeyEx
Definition: setupapi.h:2608
HDEVINFO hDevInfoTypes
Definition: hdwwiz.c:37
__wchar_t WCHAR
Definition: xmlstorage.h:180
unsigned long DWORD
Definition: ntddk_ex.h:95
BOOL WINAPI SetupDiGetClassImageIndex(IN PSP_CLASSIMAGELIST_DATA ClassImageListData, IN CONST GUID *ClassGuid, OUT PINT ImageIndex)
Definition: devclass.c:396
#define CR_INVALID_DATA
Definition: cfgmgr32.h:877
static const WCHAR L[]
Definition: oid.c:1250
#define SetupDiClassNameFromGuid
Definition: setupapi.h:2572
#define SetupDiGetClassDevs
Definition: setupapi.h:2588
#define lstrcpy
Definition: winbase.h:3714
unsigned int UINT
Definition: ndis.h:50
#define RegQueryValue
Definition: winreg.h:523
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:54
SP_CLASSIMAGELIST_DATA ImageListData
Definition: hdwwiz.c:34
#define DIGCF_PRESENT
Definition: setupapi.h:171

Referenced by InitHardWareTypesPage().

◆ FinishPageDlgProc()

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

Definition at line 190 of file hdwwiz.c.

191 {
192  switch (uMsg)
193  {
194  case WM_INITDIALOG:
195  {
196  /* Set title font */
198  }
199  break;
200 
201  case WM_NOTIFY:
202  {
203  LPNMHDR lpnm = (LPNMHDR)lParam;
204 
205  switch (lpnm->code)
206  {
207  case PSN_SETACTIVE:
208  {
209  /* Only "Finish" button */
211  }
212  break;
213  }
214  }
215  break;
216  }
217 
218  return FALSE;
219 }
#define TRUE
Definition: types.h:120
UINT_PTR WPARAM
Definition: windef.h:207
#define SendDlgItemMessage
Definition: winuser.h:5817
#define PSN_SETACTIVE
Definition: prsht.h:115
struct tagNMHDR * LPNMHDR
HFONT hTitleFont
Definition: hdwwiz.c:33
UINT code
Definition: winuser.h:3134
LONG_PTR LPARAM
Definition: windef.h:208
#define PropSheet_SetWizButtons(d, f)
Definition: prsht.h:357
#define IDC_FINISHTITLE
Definition: resource.h:60
#define PSWIZB_FINISH
Definition: prsht.h:155
HWND WINAPI GetParent(_In_ HWND)
#define WM_SETFONT
Definition: winuser.h:1632
#define WM_INITDIALOG
Definition: winuser.h:1721
LPARAM lParam
Definition: combotst.c:139
#define WM_NOTIFY
Definition: richedit.h:61

Referenced by HardwareWizardInit().

◆ HardwareWizardInit()

static VOID HardwareWizardInit ( HWND  hwnd)
static

Definition at line 794 of file hdwwiz.c.

795 {
796  HPROPSHEETPAGE ahpsp[10];
797  PROPSHEETPAGE psp = {0};
798  PROPSHEETHEADER psh;
799  UINT nPages = 0;
800 
801  /* Create the Start page, until setup is working */
802  psp.dwSize = sizeof(PROPSHEETPAGE);
803  psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER;
804  psp.hInstance = hApplet;
805  psp.lParam = 0;
806  psp.pfnDlgProc = StartPageDlgProc;
807  psp.pszTemplate = MAKEINTRESOURCE(IDD_STARTPAGE);
808  ahpsp[nPages++] = CreatePropertySheetPage(&psp);
809 
810  /* Create search page */
811  psp.dwSize = sizeof(PROPSHEETPAGE);
812  psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE;
813  psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_SEARCHTITLE);
814  psp.pszHeaderSubTitle = NULL;
815  psp.hInstance = hApplet;
816  psp.lParam = 0;
817  psp.pfnDlgProc = SearchPageDlgProc;
818  psp.pszTemplate = MAKEINTRESOURCE(IDD_SEARCHPAGE);
819  ahpsp[nPages++] = CreatePropertySheetPage(&psp);
820 
821  /* Create is connected page */
822  psp.dwSize = sizeof(PROPSHEETPAGE);
823  psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE;
824  psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_ISCONNECTED);
825  psp.pszHeaderSubTitle = NULL;
826  psp.hInstance = hApplet;
827  psp.lParam = 0;
828  psp.pfnDlgProc = IsConnectedPageDlgProc;
829  psp.pszTemplate = MAKEINTRESOURCE(IDD_ISCONNECTEDPAGE);
830  ahpsp[nPages++] = CreatePropertySheetPage(&psp);
831 
832  /* Create probe list page */
833  psp.dwSize = sizeof(PROPSHEETPAGE);
834  psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE;
835  psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_PROBELISTTITLE);
836  psp.pszHeaderSubTitle = NULL;
837  psp.hInstance = hApplet;
838  psp.lParam = 0;
839  psp.pfnDlgProc = ProbeListPageDlgProc;
840  psp.pszTemplate = MAKEINTRESOURCE(IDD_PROBELISTPAGE);
841  ahpsp[nPages++] = CreatePropertySheetPage(&psp);
842 
843  /* Create select search way page */
844  psp.dwSize = sizeof(PROPSHEETPAGE);
845  psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE;
846  psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_SELECTWAYTITLE);
847  psp.pszHeaderSubTitle = NULL;
848  psp.hInstance = hApplet;
849  psp.lParam = 0;
850  psp.pfnDlgProc = SelectWayPageDlgProc;
851  psp.pszTemplate = MAKEINTRESOURCE(IDD_SELECTWAYPAGE);
852  ahpsp[nPages++] = CreatePropertySheetPage(&psp);
853 
854  /* Create device status page */
855  psp.dwSize = sizeof(PROPSHEETPAGE);
856  psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER;
857  psp.hInstance = hApplet;
858  psp.lParam = 0;
859  psp.pfnDlgProc = DevStatusPageDlgProc;
860  psp.pszTemplate = MAKEINTRESOURCE(IDD_HWSTATUSPAGE);
861  ahpsp[nPages++] = CreatePropertySheetPage(&psp);
862 
863  /* Create hardware types page */
864  psp.dwSize = sizeof(PROPSHEETPAGE);
865  psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE;
866  psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_HDTYPESTITLE);
867  psp.pszHeaderSubTitle = NULL;
868  psp.hInstance = hApplet;
869  psp.lParam = 0;
870  psp.pfnDlgProc = HdTypesPageDlgProc;
871  psp.pszTemplate = MAKEINTRESOURCE(IDD_HWTYPESPAGE);
872  ahpsp[nPages++] = CreatePropertySheetPage(&psp);
873 
874  /* Create progress page */
875  psp.dwSize = sizeof(PROPSHEETPAGE);
876  psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE;
877  psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_SEARCHTITLE);
878  psp.pszHeaderSubTitle = NULL;
879  psp.hInstance = hApplet;
880  psp.lParam = 0;
881  psp.pfnDlgProc = ProgressPageDlgProc;
882  psp.pszTemplate = MAKEINTRESOURCE(IDD_PROGRESSPAGE);
883  ahpsp[nPages++] = CreatePropertySheetPage(&psp);
884 
885  /* Create finish page */
886  psp.dwSize = sizeof(PROPSHEETPAGE);
887  psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER;
888  psp.hInstance = hApplet;
889  psp.lParam = 0;
890  psp.pfnDlgProc = FinishPageDlgProc;
891  psp.pszTemplate = MAKEINTRESOURCE(IDD_FINISHPAGE);
892  ahpsp[nPages++] = CreatePropertySheetPage(&psp);
893 
894  /* Create not connected page */
895  psp.dwSize = sizeof(PROPSHEETPAGE);
896  psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER;
897  psp.hInstance = hApplet;
898  psp.lParam = 0;
899  psp.pfnDlgProc = NotConnectedPageDlgProc;
900  psp.pszTemplate = MAKEINTRESOURCE(IDD_NOTCONNECTEDPAGE);
901  ahpsp[nPages++] = CreatePropertySheetPage(&psp);
902 
903  /* Create the property sheet */
904  psh.dwSize = sizeof(PROPSHEETHEADER);
905  psh.dwFlags = PSH_WIZARD97 | PSH_WATERMARK | PSH_HEADER | PSH_USEICONID | PSH_USECALLBACK;
906  psh.hInstance = hApplet;
907  psh.pszIcon = MAKEINTRESOURCEW(IDI_CPLICON);
908  psh.hwndParent = hwnd;
909  psh.nPages = nPages;
910  psh.nStartPage = 0;
911  psh.phpage = ahpsp;
912  psh.pszbmWatermark = MAKEINTRESOURCE(IDB_WATERMARK);
913  psh.pszbmHeader = MAKEINTRESOURCE(IDB_HEADER);
914  psh.pfnCallback = PropSheetProc;
915 
916  /* Create title font */
918 
919  /* Display the wizard */
920  PropertySheet(&psh);
921 
923 }
static INT_PTR CALLBACK SearchPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: hdwwiz.c:101
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define MAKEINTRESOURCE
Definition: winuser.h:591
#define IDD_SELECTWAYPAGE
Definition: resource.h:31
static int CALLBACK PropSheetProc(HWND hwndDlg, UINT uMsg, LPARAM lParam)
Definition: hdwwiz.c:777
#define IDS_PROBELISTTITLE
Definition: resource.h:15
static HFONT CreateTitleFont(VOID)
Definition: hdwwiz.c:45
#define IDD_STARTPAGE
Definition: resource.h:18
static INT_PTR CALLBACK DevStatusPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: hdwwiz.c:514
#define IDD_PROGRESSPAGE
Definition: resource.h:32
BOOL WINAPI DeleteObject(_In_ HGDIOBJ)
static INT_PTR CALLBACK HdTypesPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: hdwwiz.c:711
#define IDD_HWSTATUSPAGE
Definition: resource.h:30
static INT_PTR CALLBACK FinishPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: hdwwiz.c:190
#define PSH_USECALLBACK
Definition: prsht.h:48
#define IDB_HEADER
Definition: resource.h:30
static INT_PTR CALLBACK SelectWayPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: hdwwiz.c:473
HFONT hTitleFont
Definition: hdwwiz.c:33
static INT_PTR CALLBACK IsConnectedPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: hdwwiz.c:131
#define PSH_USEICONID
Definition: prsht.h:42
#define IDS_ISCONNECTED
Definition: resource.h:21
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
smooth NULL
Definition: ftsmooth.c:416
#define PROPSHEETHEADER
Definition: prsht.h:392
HINSTANCE hApplet
Definition: hdwwiz.c:32
#define IDS_SELECTWAYTITLE
Definition: resource.h:18
#define CreatePropertySheetPage
Definition: prsht.h:399
#define PSP_DEFAULT
Definition: prsht.h:22
#define IDI_CPLICON
Definition: resource.h:4
static INT_PTR CALLBACK ProbeListPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: hdwwiz.c:400
#define IDD_SEARCHPAGE
Definition: resource.h:25
#define IDS_SEARCHTITLE
Definition: resource.h:17
#define IDD_FINISHPAGE
Definition: resource.h:34
static INT_PTR CALLBACK StartPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: hdwwiz.c:70
#define IDD_NOTCONNECTEDPAGE
Definition: resource.h:28
#define IDD_ISCONNECTEDPAGE
Definition: resource.h:27
static INT_PTR CALLBACK ProgressPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: hdwwiz.c:747
#define IDD_PROBELISTPAGE
Definition: resource.h:29
#define IDB_WATERMARK
Definition: resource.h:4
unsigned int UINT
Definition: ndis.h:50
#define IDD_HWTYPESPAGE
Definition: resource.h:35
#define PropertySheet
Definition: prsht.h:400
static INT_PTR CALLBACK NotConnectedPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: hdwwiz.c:222
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define IDS_HDTYPESTITLE
Definition: resource.h:19
#define PROPSHEETPAGE
Definition: prsht.h:389

Referenced by AddHardwareWizard().

◆ HdTypesPageDlgProc()

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

Definition at line 711 of file hdwwiz.c.

712 {
713  switch (uMsg)
714  {
715  case WM_INITDIALOG:
716  {
717  InitHardWareTypesPage(hwndDlg);
718  }
719  break;
720 
721  case WM_NOTIFY:
722  {
723  LPNMHDR lpnm = (LPNMHDR)lParam;
724 
725  switch (lpnm->code)
726  {
727  case PSN_SETACTIVE:
728  {
730  }
731  break;
732 
733  case PSN_WIZBACK:
734  {
736  return TRUE;
737  }
738  }
739  }
740  break;
741  }
742 
743  return FALSE;
744 }
#define IDD_SELECTWAYPAGE
Definition: resource.h:31
#define TRUE
Definition: types.h:120
#define PSN_SETACTIVE
Definition: prsht.h:115
#define SetWindowLongPtr
Definition: treelist.c:70
static VOID InitHardWareTypesPage(HWND hwndDlg)
Definition: hdwwiz.c:649
#define DWLP_MSGRESULT
Definition: winuser.h:864
struct tagNMHDR * LPNMHDR
UINT code
Definition: winuser.h:3134
#define PropSheet_SetWizButtons(d, f)
Definition: prsht.h:357
#define PSWIZB_BACK
Definition: prsht.h:153
HWND WINAPI GetParent(_In_ HWND)
#define PSN_WIZBACK
Definition: prsht.h:120
#define WM_INITDIALOG
Definition: winuser.h:1721
LPARAM lParam
Definition: combotst.c:139
#define WM_NOTIFY
Definition: richedit.h:61

Referenced by HardwareWizardInit().

◆ InitHardWareTypesPage()

static VOID InitHardWareTypesPage ( HWND  hwndDlg)
static

Definition at line 649 of file hdwwiz.c.

650 {
651  HWND hList = GetDlgItem(hwndDlg, IDC_HWTYPESLIST);
652  WCHAR DevName[MAX_STR_SIZE];
653  WCHAR DevDesc[MAX_STR_SIZE];
654  BOOL DevExist = FALSE;
655  INT ClassRet, DevImage, Index = 0;
656  LV_COLUMN Column;
657  LV_ITEM Item;
658  RECT Rect;
659 
660  if (!hList) return;
661 
662  ZeroMemory(&Column, sizeof(LV_COLUMN));
663 
665 
666  Column.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;
667  Column.fmt = LVCFMT_LEFT;
668  Column.iSubItem = 0;
669  Column.pszText = NULL;
670  Column.cx = Rect.right - GetSystemMetrics(SM_CXVSCROLL);
671  (VOID) ListView_InsertColumn(hList, 0, &Column);
672 
673  ZeroMemory(&Item, sizeof(LV_ITEM));
674 
675  do
676  {
677  ClassRet = EnumDeviceClasses(Index,
678  DevName,
679  DevDesc,
680  &DevExist,
681  &DevImage);
682 
683  if ((ClassRet != -1) && (DevExist))
684  {
685  Item.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE | LVIF_IMAGE;
686  Item.iItem = Index;
687  Item.iImage = DevImage;
688 
689  if (DevDesc[0] != L'\0')
690  Item.pszText = (LPWSTR) DevDesc;
691  else
692  Item.pszText = (LPWSTR) DevName;
693 
694  (VOID) ListView_InsertItem(hList, &Item);
695 
696  /* Kill InfoList initialized in EnumDeviceClasses */
697  if (hDevInfoTypes)
698  {
701  }
702  }
703  Index++;
704  }
705  while (ClassRet != -1);
706 
708 }
#define LV_ITEM
Definition: commctrl.h:2333
#define LVCF_WIDTH
Definition: commctrl.h:2583
#define LVSIL_SMALL
Definition: commctrl.h:2295
#define LVCF_TEXT
Definition: commctrl.h:2584
#define LV_COLUMN
Definition: commctrl.h:2543
#define LVCFMT_LEFT
Definition: commctrl.h:2594
#define ZeroMemory
Definition: winbase.h:1648
#define ListView_InsertItem(hwnd, pitem)
Definition: commctrl.h:2404
int32_t INT
Definition: typedefs.h:57
#define LVIF_TEXT
Definition: commctrl.h:2305
#define ListView_InsertColumn(hwnd, iCol, pcol)
Definition: commctrl.h:2632
unsigned int BOOL
Definition: ntddk_ex.h:94
#define ListView_SetImageList(hwnd, himl, iImageList)
Definition: commctrl.h:2300
smooth NULL
Definition: ftsmooth.c:416
#define IDC_HWTYPESLIST
Definition: resource.h:51
#define MAX_STR_SIZE
Definition: hdwwiz.h:21
HDEVINFO hDevInfoTypes
Definition: hdwwiz.c:37
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
__wchar_t WCHAR
Definition: xmlstorage.h:180
BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo)
Definition: devinst.c:2898
#define LVIF_IMAGE
Definition: commctrl.h:2306
static const UCHAR Index[8]
Definition: usbohci.c:18
int WINAPI GetSystemMetrics(_In_ int)
static INT EnumDeviceClasses(INT ClassIndex, LPWSTR DevClassName, LPWSTR DevClassDesc, BOOL *DevPresent, INT *ClassImage)
Definition: hdwwiz.c:554
static const WCHAR L[]
Definition: oid.c:1250
#define VOID
Definition: acefi.h:82
HWND hList
Definition: livecd.c:10
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define LVCF_FMT
Definition: commctrl.h:2582
#define SM_CXVSCROLL
Definition: winuser.h:951
#define LVIF_PARAM
Definition: commctrl.h:2307
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define LVIF_STATE
Definition: commctrl.h:2308
SP_CLASSIMAGELIST_DATA ImageListData
Definition: hdwwiz.c:34
struct Rect Rect

Referenced by HdTypesPageDlgProc().

◆ InitProbeListPage()

static VOID InitProbeListPage ( HWND  hwndDlg)
static

Definition at line 280 of file hdwwiz.c.

281 {
282  LV_COLUMN Column;
283  LV_ITEM Item;
285  szTrimGuid[MAX_STR_SIZE], szStatusText[MAX_STR_SIZE];
286  HWND hList = GetDlgItem(hwndDlg, IDC_PROBELIST);
287  PWSTR pstrStatusText;
288  HDEVINFO hDevInfo;
289  SP_DEVINFO_DATA DevInfoData;
290  ULONG ulStatus, ulProblemNumber;
291  GUID ClassGuid;
292  RECT Rect;
293  DWORD Index;
294 
295  if (!hList) return;
296 
297  ZeroMemory(&Column, sizeof(LV_COLUMN));
298 
300 
301  Column.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;
302  Column.fmt = LVCFMT_LEFT;
303  Column.iSubItem = 0;
304  Column.pszText = NULL;
305  Column.cx = Rect.right - GetSystemMetrics(SM_CXVSCROLL);
306  (VOID) ListView_InsertColumn(hList, 0, &Column);
307 
308  ZeroMemory(&Item, sizeof(LV_ITEM));
309 
310  LoadString(hApplet, IDS_ADDNEWDEVICE, szBuffer, sizeof(szBuffer) / sizeof(WCHAR));
311 
312  Item.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE | LVIF_IMAGE;
313  Item.pszText = (LPWSTR) szBuffer;
314  Item.iItem = (INT) ListView_GetItemCount(hList);
315  Item.iImage = -1;
316  (VOID) ListView_InsertItem(hList, &Item);
317 
319 
320  if (hDevInfo == INVALID_HANDLE_VALUE) return;
321 
322  /* Get the device image List */
325 
326  DevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
327  for (Index = 0; TRUE; Index++)
328  {
329  szBuffer[0] = L'\0';
330 
331  if (!SetupDiEnumDeviceInfo(hDevInfo, Index, &DevInfoData)) break;
332 
333  if (CM_Get_DevNode_Status_Ex(&ulStatus, &ulProblemNumber, DevInfoData.DevInst, 0, NULL) == CR_SUCCESS)
334  {
335  if (ulStatus & DN_NO_SHOW_IN_DM) continue;
336  }
337 
338  /* Get the device's friendly name */
339  if (!SetupDiGetDeviceRegistryProperty(hDevInfo,
340  &DevInfoData,
342  0,
343  (BYTE*)szBuffer,
344  MAX_STR_SIZE,
345  NULL))
346  {
347  /* If the friendly name fails, try the description instead */
349  &DevInfoData,
351  0,
352  (BYTE*)szBuffer,
353  MAX_STR_SIZE,
354  NULL);
355  }
356 
358  &DevInfoData,
360  0,
361  (BYTE*)szGuid,
362  MAX_STR_SIZE,
363  NULL);
364 
365  TrimGuidString(szGuid, szTrimGuid);
366  UuidFromStringW(szTrimGuid, &ClassGuid);
367 
369  &ClassGuid,
370  &Item.iImage);
371 
373  DevInfoData.DevInst,
374  ulProblemNumber,
375  szStatusText,
376  sizeof(szStatusText) / sizeof(WCHAR));
377 
378  pstrStatusText = (PWSTR)HeapAlloc(hProcessHeap, 0, sizeof(szStatusText));
379  lstrcpy(pstrStatusText, szStatusText);
380 
381  if (szBuffer[0] != L'\0')
382  {
383  /* Set device name */
384  Item.pszText = (LPWSTR) szBuffer;
385  Item.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE | LVIF_IMAGE;
386  Item.lParam = (LPARAM) pstrStatusText;
387  Item.iItem = (INT) ListView_GetItemCount(hList);
388  (VOID) ListView_InsertItem(hList, &Item);
389  }
390 
391  DevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
392  }
393 
397 }
BOOL WINAPI SetupDiEnumDeviceInfo(HDEVINFO devinfo, DWORD index, PSP_DEVINFO_DATA info)
Definition: devinst.c:1792
#define LV_ITEM
Definition: commctrl.h:2333
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:3584
#define TRUE
Definition: types.h:120
static VOID TrimGuidString(LPWSTR szString, LPWSTR szNewString)
Definition: hdwwiz.c:259
#define LVCF_WIDTH
Definition: commctrl.h:2583
#define LVSIL_SMALL
Definition: commctrl.h:2295
#define LVCF_TEXT
Definition: commctrl.h:2584
uint16_t * PWSTR
Definition: typedefs.h:55
#define LV_COLUMN
Definition: commctrl.h:2543
#define INT
Definition: polytest.cpp:20
#define LVS_EX_FULLROWSELECT
Definition: commctrl.h:2730
#define LVCFMT_LEFT
Definition: commctrl.h:2594
#define INVALID_HANDLE_VALUE
Definition: compat.h:400
#define ZeroMemory
Definition: winbase.h:1648
#define SetupDiGetDeviceRegistryProperty
Definition: setupapi.h:2598
#define ListView_InsertItem(hwnd, pitem)
Definition: commctrl.h:2404
BOOL WINAPI SetupDiGetClassImageList(OUT PSP_CLASSIMAGELIST_DATA ClassImageListData)
Definition: devclass.c:441
#define SPDRP_CLASSGUID
Definition: setupapi.h:510
#define LVIF_TEXT
Definition: commctrl.h:2305
#define ListView_InsertColumn(hwnd, iCol, pcol)
Definition: commctrl.h:2632
#define IDC_PROBELIST
Definition: resource.h:39
#define SetupDiGetClassDevsEx
Definition: setupapi.h:2589
RPC_STATUS WINAPI UuidFromStringW(RPC_WSTR s, UUID *uuid)
Definition: rpcrt4_main.c:612
#define CR_SUCCESS
Definition: cfgmgr32.h:842
#define ListView_SetImageList(hwnd, himl, iImageList)
Definition: commctrl.h:2300
smooth NULL
Definition: ftsmooth.c:416
UINT WINAPI DeviceProblemTextW(IN HMACHINE hMachine OPTIONAL, IN DEVINST dnDevInst, IN ULONG uProblemId, OUT LPWSTR lpString, IN UINT uMaxString)
Definition: devprblm.cpp:491
LONG_PTR LPARAM
Definition: windef.h:208
HINSTANCE hApplet
Definition: hdwwiz.c:32
#define ListView_GetItemCount(hwnd)
Definition: commctrl.h:2303
#define DN_NO_SHOW_IN_DM
Definition: cfg.h:148
struct _SP_DEVINFO_DATA SP_DEVINFO_DATA
#define MAX_STR_SIZE
Definition: hdwwiz.h:21
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
__wchar_t WCHAR
Definition: xmlstorage.h:180
BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo)
Definition: devinst.c:2898
#define LVIF_IMAGE
Definition: commctrl.h:2306
static const UCHAR Index[8]
Definition: usbohci.c:18
#define SPDRP_FRIENDLYNAME
Definition: setupapi.h:514
int WINAPI GetSystemMetrics(_In_ int)
unsigned long DWORD
Definition: ntddk_ex.h:95
BOOL WINAPI SetupDiGetClassImageIndex(IN PSP_CLASSIMAGELIST_DATA ClassImageListData, IN CONST GUID *ClassGuid, OUT PINT ImageIndex)
Definition: devclass.c:396
#define ListView_SetExtendedListViewStyle(hwndLV, dw)
Definition: commctrl.h:2721
#define DIGCF_ALLCLASSES
Definition: setupapi.h:172
static const WCHAR L[]
Definition: oid.c:1250
#define VOID
Definition: acefi.h:82
#define SPDRP_DEVICEDESC
Definition: setupapi.h:502
unsigned char BYTE
Definition: xxhash.c:193
HWND hList
Definition: livecd.c:10
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define LVCF_FMT
Definition: commctrl.h:2582
static const WCHAR szGuid[]
Definition: rtlstr.c:1892
#define lstrcpy
Definition: winbase.h:3714
HANDLE hProcessHeap
Definition: hdwwiz.c:36
#define SM_CXVSCROLL
Definition: winuser.h:951
#define LVIF_PARAM
Definition: commctrl.h:2307
unsigned int ULONG
Definition: retypes.h:1
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define LVIF_STATE
Definition: commctrl.h:2308
#define IDS_ADDNEWDEVICE
Definition: resource.h:20
#define LoadString
Definition: winuser.h:5794
SP_CLASSIMAGELIST_DATA ImageListData
Definition: hdwwiz.c:34
struct Rect Rect
#define DIGCF_PRESENT
Definition: setupapi.h:171

Referenced by ProbeListPageDlgProc().

◆ InstallNewDevice()

BOOL WINAPI InstallNewDevice ( HWND  hwndParent,
LPGUID  ClassGuid,
PDWORD  pReboot 
)

Definition at line 928 of file hdwwiz.c.

929 {
930  return FALSE;
931 }

◆ IsConnectedPageDlgProc()

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

Definition at line 131 of file hdwwiz.c.

132 {
133  switch (uMsg)
134  {
135  case WM_COMMAND:
136  {
137  if(HIWORD(wParam) == BN_CLICKED)
138  {
139  if ((SendDlgItemMessage(hwndDlg, IDC_CONNECTED, BM_GETCHECK, 0, 0) == BST_CHECKED) ||
141  {
143  }
144  else
145  {
147  }
148  }
149  }
150  break;
151 
152  case WM_NOTIFY:
153  {
154  LPNMHDR lpnm = (LPNMHDR)lParam;
155 
156  switch (lpnm->code)
157  {
158  case PSN_SETACTIVE:
159  {
160  if ((SendDlgItemMessage(hwndDlg, IDC_CONNECTED, BM_GETCHECK, 0, 0) == BST_CHECKED) ||
162  {
164  }
165  else
166  {
168  }
169  }
170  break;
171 
172  case PSN_WIZNEXT:
173  {
176  else
178 
179  return TRUE;
180  }
181  }
182  }
183  break;
184  }
185 
186  return FALSE;
187 }
#define TRUE
Definition: types.h:120
#define PSWIZB_NEXT
Definition: prsht.h:154
#define SendDlgItemMessage
Definition: winuser.h:5817
#define PSN_SETACTIVE
Definition: prsht.h:115
#define SetWindowLongPtr
Definition: treelist.c:70
WPARAM wParam
Definition: combotst.c:138
#define DWLP_MSGRESULT
Definition: winuser.h:864
struct tagNMHDR * LPNMHDR
UINT code
Definition: winuser.h:3134
#define IDC_CONNECTED
Definition: resource.h:55
#define PSN_WIZNEXT
Definition: prsht.h:121
#define BM_GETCHECK
Definition: winuser.h:1900
#define PropSheet_SetWizButtons(d, f)
Definition: prsht.h:357
#define PSWIZB_BACK
Definition: prsht.h:153
#define BN_CLICKED
Definition: winuser.h:1907
#define WM_COMMAND
Definition: winuser.h:1722
#define IDD_NOTCONNECTEDPAGE
Definition: resource.h:28
HWND WINAPI GetParent(_In_ HWND)
#define IDD_PROBELISTPAGE
Definition: resource.h:29
#define BST_CHECKED
Definition: winuser.h:197
#define IDC_NOTCONNECTED
Definition: resource.h:56
#define HIWORD(l)
Definition: typedefs.h:246
LPARAM lParam
Definition: combotst.c:139
#define WM_NOTIFY
Definition: richedit.h:61

Referenced by HardwareWizardInit().

◆ NotConnectedPageDlgProc()

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

Definition at line 222 of file hdwwiz.c.

223 {
224  switch (uMsg)
225  {
226  case WM_INITDIALOG:
227  {
228  /* Set title font */
230  }
231  break;
232 
233  case WM_NOTIFY:
234  {
235  LPNMHDR lpnm = (LPNMHDR)lParam;
236 
237  switch (lpnm->code)
238  {
239  case PSN_SETACTIVE:
240  {
242  }
243  break;
244 
245  case PSN_WIZBACK:
246  {
248  return TRUE;
249  }
250  }
251  }
252  break;
253  }
254 
255  return FALSE;
256 }
#define TRUE
Definition: types.h:120
UINT_PTR WPARAM
Definition: windef.h:207
#define SendDlgItemMessage
Definition: winuser.h:5817
#define PSN_SETACTIVE
Definition: prsht.h:115
#define SetWindowLongPtr
Definition: treelist.c:70
#define DWLP_MSGRESULT
Definition: winuser.h:864
struct tagNMHDR * LPNMHDR
HFONT hTitleFont
Definition: hdwwiz.c:33
UINT code
Definition: winuser.h:3134
LONG_PTR LPARAM
Definition: windef.h:208
#define PropSheet_SetWizButtons(d, f)
Definition: prsht.h:357
#define IDC_FINISHTITLE
Definition: resource.h:60
#define PSWIZB_FINISH
Definition: prsht.h:155
#define PSWIZB_BACK
Definition: prsht.h:153
#define IDD_ISCONNECTEDPAGE
Definition: resource.h:27
HWND WINAPI GetParent(_In_ HWND)
#define WM_SETFONT
Definition: winuser.h:1632
#define PSN_WIZBACK
Definition: prsht.h:120
#define WM_INITDIALOG
Definition: winuser.h:1721
LPARAM lParam
Definition: combotst.c:139
#define WM_NOTIFY
Definition: richedit.h:61

Referenced by HardwareWizardInit().

◆ ProbeListPageDlgProc()

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

Definition at line 400 of file hdwwiz.c.

401 {
402  INT Index;
403  LVITEM Item;
404 
405  switch (uMsg)
406  {
407  case WM_INITDIALOG:
408  {
410  InitProbeListPage(hwndDlg);
411  }
412  break;
413 
414  case WM_NOTIFY:
415  {
416  LPNMHDR lpnm = (LPNMHDR)lParam;
417 
418  switch (lpnm->code)
419  {
420  case PSN_SETACTIVE:
421  {
423  }
424  break;
425 
426  case PSN_WIZNEXT:
427  {
429  if (Index == -1) Index = 0;
430 
431  if (Index == 0)
432  {
434  }
435  else
436  {
437  PWSTR pts;
438 
439  ZeroMemory(&Item, sizeof(LV_ITEM));
440  Item.mask = LVIF_PARAM;
441  Item.iItem = Index;
442  (VOID) ListView_GetItem(GetDlgItem(hwndDlg, IDC_PROBELIST), &Item);
443  pts = (PWSTR) Item.lParam;
445 
447  }
448  return TRUE;
449  }
450  }
451  }
452  break;
453 
454  case WM_DESTROY:
455  {
456  for (Index = ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_PROBELIST)); --Index > 0;)
457  {
458  ZeroMemory(&Item, sizeof(LV_ITEM));
459  Item.mask = LVIF_PARAM;
460  Item.iItem = Index;
461  (VOID) ListView_GetItem(GetDlgItem(hwndDlg, IDC_PROBELIST), &Item);
462  HeapFree(hProcessHeap, 0, (LPVOID) Item.lParam);
463  }
465  }
466  break;
467  }
468 
469  return FALSE;
470 }
#define LV_ITEM
Definition: commctrl.h:2333
#define IDD_SELECTWAYPAGE
Definition: resource.h:31
PWSTR pDeviceStatusText
Definition: hdwwiz.c:35
#define TRUE
Definition: types.h:120
uint16_t * PWSTR
Definition: typedefs.h:55
#define INT
Definition: polytest.cpp:20
#define PSWIZB_NEXT
Definition: prsht.h:154
#define ZeroMemory
Definition: winbase.h:1648
#define IDD_HWSTATUSPAGE
Definition: resource.h:30
#define PSN_SETACTIVE
Definition: prsht.h:115
int32_t INT
Definition: typedefs.h:57
#define SetWindowLongPtr
Definition: treelist.c:70
#define DWLP_MSGRESULT
Definition: winuser.h:864
struct tagNMHDR * LPNMHDR
static VOID InitProbeListPage(HWND hwndDlg)
Definition: hdwwiz.c:280
UINT code
Definition: winuser.h:3134
#define IDC_PROBELIST
Definition: resource.h:39
#define PSN_WIZNEXT
Definition: prsht.h:121
#define ListView_GetItemCount(hwnd)
Definition: commctrl.h:2303
#define LVNI_FOCUSED
Definition: commctrl.h:2419
#define PropSheet_SetWizButtons(d, f)
Definition: prsht.h:357
#define WM_DESTROY
Definition: winuser.h:1591
#define MAX_STR_SIZE
Definition: hdwwiz.h:21
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define PSWIZB_BACK
Definition: prsht.h:153
static const UCHAR Index[8]
Definition: usbohci.c:18
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
#define VOID
Definition: acefi.h:82
HWND WINAPI GetParent(_In_ HWND)
HANDLE hProcessHeap
Definition: hdwwiz.c:36
#define ListView_GetItem(hwnd, pitem)
Definition: commctrl.h:2390
#define SendMessage
Definition: winuser.h:5818
#define LVIF_PARAM
Definition: commctrl.h:2307
#define LVITEM
Definition: commctrl.h:2371
#define LVM_GETNEXTITEM
Definition: commctrl.h:2429
#define WM_INITDIALOG
Definition: winuser.h:1721
LPARAM lParam
Definition: combotst.c:139
#define HeapFree(x, y, z)
Definition: compat.h:403
#define WM_NOTIFY
Definition: richedit.h:61

Referenced by HardwareWizardInit().

◆ ProgressPageDlgProc()

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

Definition at line 747 of file hdwwiz.c.

748 {
749  switch (uMsg)
750  {
751  case WM_NOTIFY:
752  {
753  LPNMHDR lpnm = (LPNMHDR)lParam;
754 
755  switch (lpnm->code)
756  {
757  case PSN_SETACTIVE:
758  {
760  }
761  break;
762 
763  case PSN_WIZBACK:
764  {
766  return TRUE;
767  }
768  }
769  }
770  break;
771  }
772 
773  return FALSE;
774 }
#define IDD_SELECTWAYPAGE
Definition: resource.h:31
#define TRUE
Definition: types.h:120
#define PSN_SETACTIVE
Definition: prsht.h:115
#define SetWindowLongPtr
Definition: treelist.c:70
#define DWLP_MSGRESULT
Definition: winuser.h:864
struct tagNMHDR * LPNMHDR
UINT code
Definition: winuser.h:3134
#define PropSheet_SetWizButtons(d, f)
Definition: prsht.h:357
#define PSWIZB_BACK
Definition: prsht.h:153
HWND WINAPI GetParent(_In_ HWND)
#define PSN_WIZBACK
Definition: prsht.h:120
LPARAM lParam
Definition: combotst.c:139
#define WM_NOTIFY
Definition: richedit.h:61

Referenced by HardwareWizardInit().

◆ PropSheetProc()

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

Definition at line 777 of file hdwwiz.c.

778 {
779  // NOTE: This callback is needed to set large icon correctly.
780  HICON hIcon;
781  switch (uMsg)
782  {
783  case PSCB_INITIALIZED:
784  {
786  SendMessageW(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
787  break;
788  }
789  }
790  return 0;
791 }
static HICON
Definition: imagelist.c:84
LONG_PTR LPARAM
Definition: windef.h:208
HINSTANCE hApplet
Definition: hdwwiz.c:32
#define IDI_CPLICON
Definition: resource.h:4
#define PSCB_INITIALIZED
Definition: prsht.h:75
HICON hIcon
Definition: msconfig.c:44
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2044
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define ICON_BIG
Definition: tnclass.cpp:51

Referenced by HardwareWizardInit().

◆ SearchPageDlgProc()

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

Definition at line 101 of file hdwwiz.c.

102 {
103  switch (uMsg)
104  {
105  case WM_INITDIALOG:
106  {
107  /* TODO: PnP devices search */
108  }
109  break;
110 
111  case WM_NOTIFY:
112  {
113  LPNMHDR lpnm = (LPNMHDR)lParam;
114 
115  switch (lpnm->code)
116  {
117  case PSN_SETACTIVE:
118  {
120  }
121  break;
122  }
123  }
124  break;
125  }
126 
127  return FALSE;
128 }
#define PSWIZB_NEXT
Definition: prsht.h:154
#define PSN_SETACTIVE
Definition: prsht.h:115
struct tagNMHDR * LPNMHDR
UINT code
Definition: winuser.h:3134
#define PropSheet_SetWizButtons(d, f)
Definition: prsht.h:357
#define PSWIZB_BACK
Definition: prsht.h:153
HWND WINAPI GetParent(_In_ HWND)
#define WM_INITDIALOG
Definition: winuser.h:1721
LPARAM lParam
Definition: combotst.c:139
#define WM_NOTIFY
Definition: richedit.h:61

Referenced by HardwareWizardInit().

◆ SelectWayPageDlgProc()

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

Definition at line 473 of file hdwwiz.c.

474 {
475  switch (uMsg)
476  {
477  case WM_NOTIFY:
478  {
479  LPNMHDR lpnm = (LPNMHDR)lParam;
480 
481  switch (lpnm->code)
482  {
483  case PSN_SETACTIVE:
484  {
488  else
489  {
492  }
493  }
494  break;
495 
496  case PSN_WIZNEXT:
497  {
500  else
502 
503  return TRUE;
504  }
505  }
506  }
507  break;
508  }
509 
510  return FALSE;
511 }
#define TRUE
Definition: types.h:120
#define IDD_PROGRESSPAGE
Definition: resource.h:32
#define PSWIZB_NEXT
Definition: prsht.h:154
#define IDC_MANUALLYINST
Definition: resource.h:43
#define SendDlgItemMessage
Definition: winuser.h:5817
#define PSN_SETACTIVE
Definition: prsht.h:115
#define SetWindowLongPtr
Definition: treelist.c:70
#define DWLP_MSGRESULT
Definition: winuser.h:864
struct tagNMHDR * LPNMHDR
UINT code
Definition: winuser.h:3134
#define PSN_WIZNEXT
Definition: prsht.h:121
#define BM_GETCHECK
Definition: winuser.h:1900
#define PropSheet_SetWizButtons(d, f)
Definition: prsht.h:357
#define BM_SETCHECK
Definition: winuser.h:1903
#define PSWIZB_BACK
Definition: prsht.h:153
#define IDC_AUTOINSTALL
Definition: resource.h:42
HWND WINAPI GetParent(_In_ HWND)
#define IDD_HWTYPESPAGE
Definition: resource.h:35
#define BST_CHECKED
Definition: winuser.h:197
LPARAM lParam
Definition: combotst.c:139
#define WM_NOTIFY
Definition: richedit.h:61

Referenced by HardwareWizardInit().

◆ StartPageDlgProc()

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

Definition at line 70 of file hdwwiz.c.

71 {
72  switch (uMsg)
73  {
74  case WM_INITDIALOG:
75  {
76  /* Set title font */
78  }
79  break;
80 
81  case WM_NOTIFY:
82  {
83  LPNMHDR lpnm = (LPNMHDR)lParam;
84 
85  switch (lpnm->code)
86  {
87  case PSN_SETACTIVE:
88  {
90  }
91  break;
92  }
93  }
94  break;
95  }
96 
97  return FALSE;
98 }
#define TRUE
Definition: types.h:120
#define PSWIZB_NEXT
Definition: prsht.h:154
UINT_PTR WPARAM
Definition: windef.h:207
#define SendDlgItemMessage
Definition: winuser.h:5817
#define PSN_SETACTIVE
Definition: prsht.h:115
struct tagNMHDR * LPNMHDR
HFONT hTitleFont
Definition: hdwwiz.c:33
UINT code
Definition: winuser.h:3134
LONG_PTR LPARAM
Definition: windef.h:208
#define PropSheet_SetWizButtons(d, f)
Definition: prsht.h:357
#define IDC_FINISHTITLE
Definition: resource.h:60
HWND WINAPI GetParent(_In_ HWND)
#define WM_SETFONT
Definition: winuser.h:1632
#define WM_INITDIALOG
Definition: winuser.h:1721
LPARAM lParam
Definition: combotst.c:139
#define WM_NOTIFY
Definition: richedit.h:61

Referenced by HardwareWizardInit().

◆ TrimGuidString()

static VOID TrimGuidString ( LPWSTR  szString,
LPWSTR  szNewString 
)
static

Definition at line 259 of file hdwwiz.c.

260 {
261  WCHAR szBuffer[39];
262  INT Index;
263 
264  if (wcslen(szString) == 38)
265  {
266  if ((szString[0] == L'{') && (szString[37] == L'}'))
267  {
268  for (Index = 0; Index < wcslen(szString); Index++)
269  szBuffer[Index] = szString[Index + 1];
270 
271  szBuffer[36] = L'\0';
272  wcscpy(szNewString, szBuffer);
273  return;
274  }
275  }
276  wcscpy(szNewString, L"\0");
277 }
int32_t INT
Definition: typedefs.h:57
__wchar_t WCHAR
Definition: xmlstorage.h:180
static const UCHAR Index[8]
Definition: usbohci.c:18
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
static const WCHAR L[]
Definition: oid.c:1250
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)

Referenced by InitProbeListPage().

Variable Documentation

◆ hApplet

HINSTANCE hApplet = NULL

Definition at line 32 of file hdwwiz.c.

Referenced by DllMain(), HardwareWizardInit(), InitProbeListPage(), and PropSheetProc().

◆ hDevInfoTypes

HDEVINFO hDevInfoTypes

Definition at line 37 of file hdwwiz.c.

Referenced by EnumDeviceClasses(), and InitHardWareTypesPage().

◆ hProcessHeap

HANDLE hProcessHeap

Definition at line 36 of file hdwwiz.c.

Referenced by DllMain(), InitProbeListPage(), and ProbeListPageDlgProc().

◆ hTitleFont

◆ ImageListData

◆ pDeviceStatusText

PWSTR pDeviceStatusText

Definition at line 35 of file hdwwiz.c.

Referenced by DevStatusPageDlgProc(), and ProbeListPageDlgProc().