add a check for SPDRP_CONFIGFLAGS which is not working yet
Modified: trunk/reactos/lib/newdev/newdev.c
_____
Modified: trunk/reactos/lib/newdev/newdev.c
--- trunk/reactos/lib/newdev/newdev.c 2005-11-15 18:08:07 UTC (rev
19253)
+++ trunk/reactos/lib/newdev/newdev.c 2005-11-15 18:56:23 UTC (rev
19254)
@@ -5,6 +5,7 @@
* PURPOSE: New devices installation
*
* PROGRAMMERS: HervÚ Poussineau (hpoussin(a)reactos.org)
+* PROGRAMMERS: Christoph von Wittich (Christoph(a)ActiveVB.de)
*/
//#define NDEBUG
@@ -24,751 +25,752 @@
static HFONT
CreateTitleFont(VOID)
{
- NONCLIENTMETRICS ncm;
- LOGFONT LogFont;
- HDC hdc;
- INT FontSize;
- HFONT hFont;
+ NONCLIENTMETRICS ncm;
+ LOGFONT LogFont;
+ HDC hdc;
+ INT FontSize;
+ HFONT hFont;
- ncm.cbSize = sizeof(NONCLIENTMETRICS);
- SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0);
+ ncm.cbSize = sizeof(NONCLIENTMETRICS);
+ SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0);
- LogFont = ncm.lfMessageFont;
- LogFont.lfWeight = FW_BOLD;
- _tcscpy(LogFont.lfFaceName, _T("MS Shell Dlg"));
+ LogFont = ncm.lfMessageFont;
+ LogFont.lfWeight = FW_BOLD;
+ _tcscpy(LogFont.lfFaceName, _T("MS Shell Dlg"));
- hdc = GetDC(NULL);
- FontSize = 12;
- LogFont.lfHeight = 0 - GetDeviceCaps (hdc, LOGPIXELSY) *
FontSize / 72;
- hFont = CreateFontIndirect(&LogFont);
- ReleaseDC(NULL, hdc);
+ hdc = GetDC(NULL);
+ FontSize = 12;
+ LogFont.lfHeight = 0 - GetDeviceCaps (hdc, LOGPIXELSY) * FontSize /
72;
+ hFont = CreateFontIndirect(&LogFont);
+ ReleaseDC(NULL, hdc);
- return hFont;
+ return hFont;
}
static VOID
CenterWindow(HWND hWnd)
{
- HWND hWndParent;
- RECT rcParent;
- RECT rcWindow;
+ HWND hWndParent;
+ RECT rcParent;
+ RECT rcWindow;
- hWndParent = GetParent(hWnd);
- if (hWndParent == NULL)
- hWndParent = GetDesktopWindow();
+ hWndParent = GetParent(hWnd);
+ if (hWndParent == NULL)
+ hWndParent = GetDesktopWindow();
- GetWindowRect(hWndParent, &rcParent);
- GetWindowRect(hWnd, &rcWindow);
+ GetWindowRect(hWndParent, &rcParent);
+ GetWindowRect(hWnd, &rcWindow);
- SetWindowPos(hWnd,
- HWND_TOP,
- ((rcParent.right - rcParent.left) - (rcWindow.right -
rcWindow.left)) / 2,
- ((rcParent.bottom - rcParent.top) - (rcWindow.bottom -
rcWindow.top)) / 2,
- 0,
- 0,
- SWP_NOSIZE);
+ SetWindowPos(hWnd,
+ HWND_TOP,
+ ((rcParent.right - rcParent.left) - (rcWindow.right -
rcWindow.left)) / 2,
+ ((rcParent.bottom - rcParent.top) - (rcWindow.bottom -
rcWindow.top)) / 2,
+ 0,
+ 0,
+ SWP_NOSIZE);
}
static INT_PTR CALLBACK
WelcomeDlgProc(
- IN HWND hwndDlg,
- IN UINT uMsg,
- IN WPARAM wParam,
- IN LPARAM lParam)
+ IN HWND hwndDlg,
+ IN UINT uMsg,
+ IN WPARAM wParam,
+ IN LPARAM lParam)
{
- PDEVINSTDATA DevInstData;
+ PDEVINSTDATA DevInstData;
- /* Retrieve pointer to the global setup data */
- DevInstData = (PDEVINSTDATA)GetWindowLongPtr (hwndDlg,
GWL_USERDATA);
+ /* Retrieve pointer to the global setup data */
+ DevInstData = (PDEVINSTDATA)GetWindowLongPtr (hwndDlg,
GWL_USERDATA);
- switch (uMsg)
- {
- case WM_INITDIALOG:
- {
- HWND hwndControl;
- DWORD dwStyle;
+ switch (uMsg)
+ {
+ case WM_INITDIALOG:
+ {
+ HWND hwndControl;
+ DWORD dwStyle;
- /* Get pointer to the global setup data */
- DevInstData =
(PDEVINSTDATA)((LPPROPSHEETPAGE)lParam)->lParam;
- SetWindowLongPtr(hwndDlg, GWL_USERDATA,
(DWORD_PTR)DevInstData);
+ /* Get pointer to the global setup data */
+ DevInstData =
(PDEVINSTDATA)((LPPROPSHEETPAGE)lParam)->lParam;
+ SetWindowLongPtr(hwndDlg, GWL_USERDATA,
(DWORD_PTR)DevInstData);
- hwndControl = GetParent(hwndDlg);
+ hwndControl = GetParent(hwndDlg);
- /* Center the wizard window */
- CenterWindow (hwndControl);
+ /* Center the wizard window */
+ CenterWindow (hwndControl);
- /* Hide the system menu */
- dwStyle = GetWindowLong(hwndControl, GWL_STYLE);
- SetWindowLong(hwndControl, GWL_STYLE, dwStyle &
~WS_SYSMENU);
+ /* Hide the system menu */
+ dwStyle = GetWindowLong(hwndControl, GWL_STYLE);
+ SetWindowLong(hwndControl, GWL_STYLE, dwStyle &
~WS_SYSMENU);
- /* Set title font */
- SendDlgItemMessage(hwndDlg,
- IDC_WELCOMETITLE,
- WM_SETFONT,
- (WPARAM)DevInstData->hTitleFont,
- (LPARAM)TRUE);
+ /* Set title font */
+ SendDlgItemMessage(hwndDlg,
+ IDC_WELCOMETITLE,
+ WM_SETFONT,
+ (WPARAM)DevInstData->hTitleFont,
+ (LPARAM)TRUE);
- SendDlgItemMessage(hwndDlg,
- IDC_DEVICE,
- WM_SETTEXT,
- 0,
- (LPARAM) DevInstData->buffer);
+ SendDlgItemMessage(hwndDlg,
+ IDC_DEVICE,
+ WM_SETTEXT,
+ 0,
+ (LPARAM) DevInstData->buffer);
- SendDlgItemMessage(hwndDlg,
- IDC_RADIO_AUTO,
- BM_SETCHECK,
- (WPARAM) TRUE,
- (LPARAM) 0);
+ SendDlgItemMessage(hwndDlg,
+ IDC_RADIO_AUTO,
+ BM_SETCHECK,
+ (WPARAM) TRUE,
+ (LPARAM) 0);
- }
- break;
+ }
+ break;
- case WM_NOTIFY:
- {
- LPNMHDR lpnm = (LPNMHDR)lParam;
+ case WM_NOTIFY:
+ {
+ LPNMHDR lpnm = (LPNMHDR)lParam;
- switch (lpnm->code)
- {
- case PSN_SETACTIVE:
- /* Enable the Next button */
-
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_NEXT);
- break;
+ switch (lpnm->code)
+ {
+ case PSN_SETACTIVE:
+ /* Enable the Next button */
+ PropSheet_SetWizButtons(GetParent(hwndDlg),
PSWIZB_NEXT);
+ break;
- case PSN_WIZNEXT:
- /* Handle a Next button click, if
necessary */
+ case PSN_WIZNEXT:
+ /* Handle a Next button click, if necessary */
- if (SendDlgItemMessage(hwndDlg,
IDC_RADIO_AUTO, BM_GETCHECK, (WPARAM) 0, (LPARAM) 0) == BST_CHECKED)
-
PropSheet_SetCurSel(GetParent(hwndDlg), 0, IDD_SEARCHDRV);
+ if (SendDlgItemMessage(hwndDlg, IDC_RADIO_AUTO,
BM_GETCHECK, (WPARAM) 0, (LPARAM) 0) == BST_CHECKED)
+ PropSheet_SetCurSel(GetParent(hwndDlg), 0,
IDD_SEARCHDRV);
- break;
+ break;
- default:
- break;
- }
- }
- break;
+ default:
+ break;
+ }
+ }
+ break;
- default:
- break;
- }
+ default:
+ break;
+ }
- return FALSE;
+ return FALSE;
}
static INT_PTR CALLBACK
CHSourceDlgProc(
- IN HWND hwndDlg,
- IN UINT uMsg,
- IN WPARAM wParam,
- IN LPARAM lParam)
+ IN HWND hwndDlg,
+ IN UINT uMsg,
+ IN WPARAM wParam,
+ IN LPARAM lParam)
{
- PDEVINSTDATA DevInstData;
+ PDEVINSTDATA DevInstData;
- /* Retrieve pointer to the global setup data */
- DevInstData = (PDEVINSTDATA)GetWindowLongPtr (hwndDlg,
GWL_USERDATA);
+ /* Retrieve pointer to the global setup data */
+ DevInstData = (PDEVINSTDATA)GetWindowLongPtr (hwndDlg,
GWL_USERDATA);
- switch (uMsg)
- {
- case WM_INITDIALOG:
- {
- HWND hwndControl;
- DWORD dwStyle;
+ switch (uMsg)
+ {
+ case WM_INITDIALOG:
+ {
+ HWND hwndControl;
+ DWORD dwStyle;
- /* Get pointer to the global setup data */
- DevInstData =
(PDEVINSTDATA)((LPPROPSHEETPAGE)lParam)->lParam;
- SetWindowLongPtr(hwndDlg, GWL_USERDATA,
(DWORD_PTR)DevInstData);
+ /* Get pointer to the global setup data */
+ DevInstData =
(PDEVINSTDATA)((LPPROPSHEETPAGE)lParam)->lParam;
+ SetWindowLongPtr(hwndDlg, GWL_USERDATA,
(DWORD_PTR)DevInstData);
- hwndControl = GetParent(hwndDlg);
+ hwndControl = GetParent(hwndDlg);
- /* Center the wizard window */
- CenterWindow (hwndControl);
+ /* Center the wizard window */
+ CenterWindow (hwndControl);
- /* Hide the system menu */
- dwStyle = GetWindowLong(hwndControl, GWL_STYLE);
- SetWindowLong(hwndControl, GWL_STYLE, dwStyle &
~WS_SYSMENU);
+ /* Hide the system menu */
+ dwStyle = GetWindowLong(hwndControl, GWL_STYLE);
+ SetWindowLong(hwndControl, GWL_STYLE, dwStyle &
~WS_SYSMENU);
- SendDlgItemMessage(hwndDlg,
- IDC_RADIO_SEARCHHERE,
- BM_SETCHECK,
- (WPARAM) TRUE,
- (LPARAM) 0);
+ SendDlgItemMessage(hwndDlg,
+ IDC_RADIO_SEARCHHERE,
+ BM_SETCHECK,
+ (WPARAM) TRUE,
+ (LPARAM) 0);
- }
- break;
+ }
+ break;
- case WM_NOTIFY:
- {
- LPNMHDR lpnm = (LPNMHDR)lParam;
+ case WM_NOTIFY:
+ {
+ LPNMHDR lpnm = (LPNMHDR)lParam;
- switch (lpnm->code)
- {
- case PSN_SETACTIVE:
- /* Enable the Next and Back buttons */
-
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_NEXT | PSWIZB_BACK);
- break;
+ switch (lpnm->code)
+ {
+ case PSN_SETACTIVE:
+ /* Enable the Next and Back buttons */
+ PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_NEXT
| PSWIZB_BACK);
+ break;
- case PSN_WIZNEXT:
- /* Handle a Next button click, if
necessary */
- PropSheet_SetCurSel(GetParent(hwndDlg),
0, 4);
- break;
+ case PSN_WIZNEXT:
+ /* Handle a Next button click, if necessary */
+ PropSheet_SetCurSel(GetParent(hwndDlg), 0, 4);
+ break;
- default:
- break;
- }
- }
- break;
+ default:
+ break;
+ }
+ }
+ break;
- default:
- break;
- }
+ default:
+ break;
+ }
- return FALSE;
+ return FALSE;
}
static INT_PTR CALLBACK
SearchDrvDlgProc(
- IN HWND hwndDlg,
- IN UINT uMsg,
- IN WPARAM wParam,
- IN LPARAM lParam)
+ IN HWND hwndDlg,
+ IN UINT uMsg,
+ IN WPARAM wParam,
+ IN LPARAM lParam)
{
- PDEVINSTDATA DevInstData;
- DWORD dwThreadId;
+ PDEVINSTDATA DevInstData;
+ DWORD dwThreadId;
- /* Retrieve pointer to the global setup data */
- DevInstData = (PDEVINSTDATA)GetWindowLongPtr (hwndDlg,
GWL_USERDATA);
+ /* Retrieve pointer to the global setup data */
+ DevInstData = (PDEVINSTDATA)GetWindowLongPtr (hwndDlg,
GWL_USERDATA);
- switch (uMsg)
- {
- case WM_INITDIALOG:
- {
- HWND hwndControl;
- DWORD dwStyle;
+ switch (uMsg)
+ {
+ case WM_INITDIALOG:
+ {
+ HWND hwndControl;
+ DWORD dwStyle;
- /* Get pointer to the global setup data */
- DevInstData =
(PDEVINSTDATA)((LPPROPSHEETPAGE)lParam)->lParam;
- SetWindowLongPtr(hwndDlg, GWL_USERDATA,
(DWORD_PTR)DevInstData);
+ /* Get pointer to the global setup data */
+ DevInstData =
(PDEVINSTDATA)((LPPROPSHEETPAGE)lParam)->lParam;
+ SetWindowLongPtr(hwndDlg, GWL_USERDATA,
(DWORD_PTR)DevInstData);
- DevInstData->hDialog = hwndDlg;
- hwndControl = GetParent(hwndDlg);
+ DevInstData->hDialog = hwndDlg;
+ hwndControl = GetParent(hwndDlg);
- /* Center the wizard window */
- CenterWindow (hwndControl);
+ /* Center the wizard window */
+ CenterWindow (hwndControl);
- SendDlgItemMessage(hwndDlg,
- IDC_DEVICE,
- WM_SETTEXT,
- 0,
- (LPARAM) DevInstData->buffer);
+ SendDlgItemMessage(hwndDlg,
+ IDC_DEVICE,
+ WM_SETTEXT,
+ 0,
+ (LPARAM) DevInstData->buffer);
- /* Hide the system menu */
- dwStyle = GetWindowLong(hwndControl, GWL_STYLE);
- SetWindowLong(hwndControl, GWL_STYLE, dwStyle &
~WS_SYSMENU);
- }
- break;
+ /* Hide the system menu */
+ dwStyle = GetWindowLong(hwndControl, GWL_STYLE);
+ SetWindowLong(hwndControl, GWL_STYLE, dwStyle &
~WS_SYSMENU);
+ }
+ break;
- case WM_SEARCH_FINISHED:
- {
- CloseHandle(hThread);
- hThread = 0;
- if (wParam == 0)
- PropSheet_SetCurSel(GetParent(hwndDlg),
0, IDD_NODRIVER);
- else
- PropSheet_SetCurSel(GetParent(hwndDlg),
0, IDD_FINISHPAGE);
- break;
- }
- case WM_NOTIFY:
- {
- LPNMHDR lpnm = (LPNMHDR)lParam;
+ case WM_SEARCH_FINISHED:
+ {
+ CloseHandle(hThread);
+ hThread = 0;
+ if (wParam == 0)
+ PropSheet_SetCurSel(GetParent(hwndDlg), 0,
IDD_NODRIVER);
+ else
+ PropSheet_SetCurSel(GetParent(hwndDlg), 0,
IDD_FINISHPAGE);
+ break;
+ }
+ case WM_NOTIFY:
+ {
+ LPNMHDR lpnm = (LPNMHDR)lParam;
- switch (lpnm->code)
- {
- case PSN_SETACTIVE:
-
PropSheet_SetWizButtons(GetParent(hwndDlg), !PSWIZB_NEXT |
!PSWIZB_BACK);
- hThread = CreateThread( NULL, 0,
FindDriverProc, DevInstData, 0, &dwThreadId);
- break;
+ switch (lpnm->code)
+ {
+ case PSN_SETACTIVE:
+ PropSheet_SetWizButtons(GetParent(hwndDlg),
!PSWIZB_NEXT | !PSWIZB_BACK);
+ hThread = CreateThread( NULL, 0, FindDriverProc,
DevInstData, 0, &dwThreadId);
+ break;
- case PSN_KILLACTIVE:
- if (hThread != 0)
- {
- SetWindowLong ( hwndDlg,
DWL_MSGRESULT, TRUE);
- return TRUE;
- }
- break;
- case PSN_WIZNEXT:
- /* Handle a Next button click, if
necessary */
- break;
+ case PSN_KILLACTIVE:
+ if (hThread != 0)
+ {
+ SetWindowLong ( hwndDlg, DWL_MSGRESULT, TRUE);
+ return TRUE;
+ }
+ break;
+ case PSN_WIZNEXT:
+ /* Handle a Next button click, if necessary */
+ break;
- default:
- break;
- }
- }
- break;
+ default:
+ break;
+ }
+ }
+ break;
- default:
- break;
- }
+ default:
+ break;
+ }
- return FALSE;
+ return FALSE;
}
static DWORD WINAPI
FindDriverProc(
- IN LPVOID lpParam)
+ IN LPVOID lpParam)
{
- TCHAR drive[] = {'?',':',0};
- size_t nType;
- DWORD dwDrives;
- PDEVINSTDATA DevInstData;
- UINT i = 1;
+ TCHAR drive[] = {'?',':',0};
+ size_t nType;
+ DWORD dwDrives;
+ PDEVINSTDATA DevInstData;
+ UINT i = 1;
- DevInstData = (PDEVINSTDATA)lpParam;
+ DevInstData = (PDEVINSTDATA)lpParam;
- dwDrives = GetLogicalDrives();
- for (drive[0] = 'A'; drive[0] <= 'Z'; drive[0]++)
- {
- if (dwDrives & i)
- {
- nType = GetDriveType( drive );
- if ((nType == DRIVE_CDROM) || (nType ==
DRIVE_FIXED))
- {
- /* search for inf file */
- if (SearchDriver ( DevInstData, drive ))
- {
- /* if we found a valid driver
inf... */
- if (FindDriver ( DevInstData ))
- {
- InstallDriver (
DevInstData );
-
PostMessage(DevInstData->hDialog, WM_SEARCH_FINISHED, 1, 0);
- return 0;
- }
- }
- }
- }
- i <<= 1;
- }
+ dwDrives = GetLogicalDrives();
+ for (drive[0] = 'A'; drive[0] <= 'Z'; drive[0]++)
+ {
+ if (dwDrives & i)
+ {
+ nType = GetDriveType( drive );
+ if ((nType == DRIVE_CDROM))
+ //if ((nType == DRIVE_CDROM) || (nType == DRIVE_FIXED))
+ {
+ /* search for inf file */
+ if (SearchDriver ( DevInstData, drive ))
+ {
+ /* if we found a valid driver inf... */
+ if (FindDriver ( DevInstData ))
+ {
+ InstallDriver ( DevInstData );
+ PostMessage(DevInstData->hDialog,
WM_SEARCH_FINISHED, 1, 0);
+ return 0;
+ }
+ }
+ }
+ }
+ i <<= 1;
+ }
- PostMessage(DevInstData->hDialog, WM_SEARCH_FINISHED, 0, 0);
- return 0;
+ PostMessage(DevInstData->hDialog, WM_SEARCH_FINISHED, 0, 0);
+ return 0;
}
static INT_PTR CALLBACK
FinishDlgProc(
- IN HWND hwndDlg,
- IN UINT uMsg,
- IN WPARAM wParam,
- IN LPARAM lParam)
+ IN HWND hwndDlg,
+ IN UINT uMsg,
+ IN WPARAM wParam,
+ IN LPARAM lParam)
{
- PDEVINSTDATA DevInstData;
+ PDEVINSTDATA DevInstData;
- /* Retrieve pointer to the global setup data */
- DevInstData = (PDEVINSTDATA)GetWindowLongPtr (hwndDlg,
GWL_USERDATA);
+ /* Retrieve pointer to the global setup data */
+ DevInstData = (PDEVINSTDATA)GetWindowLongPtr (hwndDlg,
GWL_USERDATA);
- switch (uMsg)
- {
- case WM_INITDIALOG:
- {
- HWND hwndControl;
+ switch (uMsg)
+ {
+ case WM_INITDIALOG:
+ {
+ HWND hwndControl;
- /* Get pointer to the global setup data */
- DevInstData =
(PDEVINSTDATA)((LPPROPSHEETPAGE)lParam)->lParam;
- SetWindowLongPtr(hwndDlg, GWL_USERDATA,
(DWORD_PTR)DevInstData);
+ /* Get pointer to the global setup data */
+ DevInstData =
(PDEVINSTDATA)((LPPROPSHEETPAGE)lParam)->lParam;
+ SetWindowLongPtr(hwndDlg, GWL_USERDATA,
(DWORD_PTR)DevInstData);
- hwndControl = GetDlgItem(GetParent(hwndDlg),
IDCANCEL);
- ShowWindow (hwndControl, SW_HIDE);
- EnableWindow (hwndControl, FALSE);
+ hwndControl = GetDlgItem(GetParent(hwndDlg), IDCANCEL);
+ ShowWindow (hwndControl, SW_HIDE);
+ EnableWindow (hwndControl, FALSE);
- SendDlgItemMessage(hwndDlg,
- IDC_DEVICE,
- WM_SETTEXT,
- 0,
- (LPARAM)
DevInstData->drvInfoData.Description);
+ SendDlgItemMessage(hwndDlg,
+ IDC_DEVICE,
+ WM_SETTEXT,
+ 0,
+ (LPARAM) DevInstData->drvInfoData.Description);
- /* Set title font */
- SendDlgItemMessage(hwndDlg,
- IDC_FINISHTITLE,
- WM_SETFONT,
- (WPARAM)DevInstData->hTitleFont,
- (LPARAM)TRUE);
- }
- break;
+ /* Set title font */
+ SendDlgItemMessage(hwndDlg,
+ IDC_FINISHTITLE,
+ WM_SETFONT,
+ (WPARAM)DevInstData->hTitleFont,
+ (LPARAM)TRUE);
+ }
+ break;
- case WM_NOTIFY:
- {
- LPNMHDR lpnm = (LPNMHDR)lParam;
+ case WM_NOTIFY:
+ {
+ LPNMHDR lpnm = (LPNMHDR)lParam;
- switch (lpnm->code)
- {
- case PSN_SETACTIVE:
- /* Enable the correct buttons on for the
active page */
-
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_FINISH);
- break;
+ switch (lpnm->code)
+ {
+ case PSN_SETACTIVE:
+ /* Enable the correct buttons on for the active page */
+ PropSheet_SetWizButtons(GetParent(hwndDlg),
PSWIZB_FINISH);
+ break;
- case PSN_WIZBACK:
- /* Handle a Back button click, if
necessary */
- break;
+ case PSN_WIZBACK:
+ /* Handle a Back button click, if necessary */
+ break;
- case PSN_WIZFINISH:
- /* Handle a Finish button click, if
necessary */
- break;
+ case PSN_WIZFINISH:
+ /* Handle a Finish button click, if necessary */
+ break;
- default:
- break;
- }
- }
- break;
+ default:
+ break;
+ }
+ }
+ break;
- default:
- break;
- }
+ default:
+ break;
+ }
- return FALSE;
+ return FALSE;
}
static INT_PTR CALLBACK
InstFailDlgProc(
- IN HWND hwndDlg,
- IN UINT uMsg,
- IN WPARAM wParam,
- IN LPARAM lParam)
+ IN HWND hwndDlg,
+ IN UINT uMsg,
+ IN WPARAM wParam,
+ IN LPARAM lParam)
{
- PDEVINSTDATA DevInstData;
+ PDEVINSTDATA DevInstData;
- /* Get pointer to the global setup data */
- DevInstData = (PDEVINSTDATA)GetWindowLongPtr (hwndDlg,
GWL_USERDATA);
+ /* Get pointer to the global setup data */
+ DevInstData = (PDEVINSTDATA)GetWindowLongPtr (hwndDlg,
GWL_USERDATA);
- switch (uMsg)
- {
- case WM_INITDIALOG:
- {
- HWND hwndControl;
+ switch (uMsg)
+ {
+ case WM_INITDIALOG:
+ {
+ HWND hwndControl;
- DevInstData =
(PDEVINSTDATA)((LPPROPSHEETPAGE)lParam)->lParam;
- SetWindowLongPtr(hwndDlg, GWL_USERDATA,
(DWORD_PTR)DevInstData);
+ DevInstData =
(PDEVINSTDATA)((LPPROPSHEETPAGE)lParam)->lParam;
+ SetWindowLongPtr(hwndDlg, GWL_USERDATA,
(DWORD_PTR)DevInstData);
- hwndControl = GetDlgItem(GetParent(hwndDlg),
IDCANCEL);
- ShowWindow (hwndControl, SW_HIDE);
- EnableWindow (hwndControl, FALSE);
+ hwndControl = GetDlgItem(GetParent(hwndDlg), IDCANCEL);
+ ShowWindow (hwndControl, SW_HIDE);
+ EnableWindow (hwndControl, FALSE);
- /* Set title font */
- SendDlgItemMessage(hwndDlg,
- IDC_FINISHTITLE,
- WM_SETFONT,
- (WPARAM)DevInstData->hTitleFont,
- (LPARAM)TRUE);
- }
- break;
+ /* Set title font */
+ SendDlgItemMessage(hwndDlg,
+ IDC_FINISHTITLE,
+ WM_SETFONT,
+ (WPARAM)DevInstData->hTitleFont,
+ (LPARAM)TRUE);
+ }
+ break;
- case WM_NOTIFY:
- {
- LPNMHDR lpnm = (LPNMHDR)lParam;
- DWORD config_flags;
- BOOL ret;
+ case WM_NOTIFY:
+ {
+ LPNMHDR lpnm = (LPNMHDR)lParam;
+ DWORD config_flags;
+ BOOL ret;
- switch (lpnm->code)
- {
- case PSN_SETACTIVE:
- /* Enable the correct buttons on for the
active page */
-
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK |
PSWIZB_FINISH);
- break;
+ switch (lpnm->code)
+ {
+ case PSN_SETACTIVE:
+ /* Enable the correct buttons on for the active page */
+ PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK
| PSWIZB_FINISH);
+ break;
- case PSN_WIZBACK:
- PropSheet_SetCurSel(GetParent(hwndDlg),
0, IDD_WELCOMEPAGE);
- /* Handle a Back button click, if
necessary */
- break;
+ case PSN_WIZBACK:
+ PropSheet_SetCurSel(GetParent(hwndDlg), 0,
IDD_WELCOMEPAGE);
+ /* Handle a Back button click, if necessary */
+ break;
- case PSN_WIZFINISH:
- /* Handle a Finish button click, if
necessary */
- if (SendDlgItemMessage(hwndDlg,
IDC_DONOTSHOWDLG, BM_GETCHECK, (WPARAM) 0, (LPARAM) 0) == BST_CHECKED)
- {
+ case PSN_WIZFINISH:
+ /* Handle a Finish button click, if necessary */
+ if (SendDlgItemMessage(hwndDlg, IDC_DONOTSHOWDLG,
BM_GETCHECK, (WPARAM) 0, (LPARAM) 0) == BST_CHECKED)
+ {
-
if(SetupDiGetDeviceRegistryProperty(DevInstData->hDevInfo,
-
&DevInstData->devInfoData,
- SPDRP_CONFIGFLAGS,
- NULL,
- (BYTE *)&config_flags,
- sizeof(config_flags),
- NULL))
- {
- config_flags |=
CONFIGFLAG_FAILEDINSTALL;
- ret =
SetupDiSetDeviceRegistryProperty(
-
DevInstData->hDevInfo,
-
&DevInstData->devInfoData,
-
SPDRP_CONFIGFLAGS,
- NULL, 0 );
- }
+
if(SetupDiGetDeviceRegistryProperty(DevInstData->hDevInfo,
+ &DevInstData->devInfoData,
+ SPDRP_CONFIGFLAGS,
+ NULL,
+ (BYTE *)&config_flags,
+ sizeof(config_flags),
+ NULL))
+ {
+ config_flags |= CONFIGFLAG_FAILEDINSTALL;
+ ret = SetupDiSetDeviceRegistryProperty(
+ DevInstData->hDevInfo,
+ &DevInstData->devInfoData,
+ SPDRP_CONFIGFLAGS,
+ NULL, 0 );
+ }
- }
- break;
+ }
+ break;
- default:
- break;
- }
- }
- break;
+ default:
+ break;
+ }
+ }
+ break;
- default:
- break;
- }
+ default:
+ break;
+ }
- return FALSE;
+ return FALSE;
}
static BOOL
FindDriver(
- IN PDEVINSTDATA DevInstData)
+ IN PDEVINSTDATA DevInstData)
{
- BOOL ret;
+ BOOL ret;
- ret = SetupDiBuildDriverInfoList(DevInstData->hDevInfo,
&DevInstData->devInfoData, SPDIT_COMPATDRIVER);
- if (!ret)
- {
- DPRINT("SetupDiBuildDriverInfoList() failed with error
0x%lx\n", GetLastError());
- return FALSE;
- }
+ ret = SetupDiBuildDriverInfoList(DevInstData->hDevInfo,
&DevInstData->devInfoData, SPDIT_COMPATDRIVER);
+ if (!ret)
+ {
+ DPRINT("SetupDiBuildDriverInfoList() failed with error
0x%lx\n", GetLastError());
+ return FALSE;
+ }
- DevInstData->drvInfoData.cbSize = sizeof(SP_DRVINFO_DATA);
- ret = SetupDiEnumDriverInfo(
- DevInstData->hDevInfo,
- &DevInstData->devInfoData,
- SPDIT_COMPATDRIVER,
- 0,
- &DevInstData->drvInfoData);
- if (!ret)
- {
- if (GetLastError() == ERROR_NO_MORE_ITEMS)
- return FALSE;
- DPRINT("SetupDiEnumDriverInfo() failed with error
0x%lx\n", GetLastError());
- return FALSE;
- }
- DPRINT("Installing driver %S: %S\n",
DevInstData->drvInfoData.MfgName, DevInstData->drvInfoData.Description);
+ DevInstData->drvInfoData.cbSize = sizeof(SP_DRVINFO_DATA);
+ ret = SetupDiEnumDriverInfo(
+ DevInstData->hDevInfo,
+ &DevInstData->devInfoData,
+ SPDIT_COMPATDRIVER,
+ 0,
+ &DevInstData->drvInfoData);
+ if (!ret)
+ {
+ if (GetLastError() == ERROR_NO_MORE_ITEMS)
+ return FALSE;
+ DPRINT("SetupDiEnumDriverInfo() failed with error 0x%lx\n",
GetLastError());
+ return FALSE;
+ }
+ DPRINT("Installing driver %S: %S\n",
DevInstData->drvInfoData.MfgName, DevInstData->drvInfoData.Description);
- return TRUE;
+ return TRUE;
}
static BOOL
IsDots(IN LPCTSTR str)
{
- if(_tcscmp(str, _T(".")) && _tcscmp(str, _T(".."))) return
FALSE;
- return TRUE;
+ if(_tcscmp(str, _T(".")) && _tcscmp(str, _T("..")))
return FALSE;
+ return TRUE;
}
static LPTSTR
GetFileExt(IN LPTSTR FileName)
{
- if (FileName == 0)
- return _T("");
+ if (FileName == 0)
+ return _T("");
- int i = _tcsclen(FileName);
- while ((i >= 0) && (FileName[i] != _T('.')))
- i--;
+ int i = _tcsclen(FileName);
+ while ((i >= 0) && (FileName[i] != _T('.')))
+ i--;
- FileName = _tcslwr(FileName);
+ FileName = _tcslwr(FileName);
- if (i >= 0)
- return &FileName[i];
- else
- return _T("");
+ if (i >= 0)
+ return &FileName[i];
+ else
+ return _T("");
}
static BOOL
SearchDriver(
- IN PDEVINSTDATA DevInstData,
- IN LPCTSTR Path)
+ IN PDEVINSTDATA DevInstData,
+ IN LPCTSTR Path)
{
- WIN32_FIND_DATA wfd;
- SP_DEVINSTALL_PARAMS DevInstallParams;
- TCHAR DirPath[MAX_PATH];
- TCHAR FileName[MAX_PATH];
- TCHAR FullPath[MAX_PATH];
- TCHAR LastDirPath[MAX_PATH] = _T("");
- TCHAR PathWithPattern[MAX_PATH];
- BOOL ok = TRUE;
- BOOL ret;
- HANDLE hFindFile;
+ WIN32_FIND_DATA wfd;
[truncated at 1000 lines; 675 more skipped]