46 if (rcWindow.
left < rcParent.
left || rcWindow.
top < rcParent.
top ||
85 dwFlags &= ~CONFIGFLAG_FAILEDINSTALL;
100 PWSTR pszUnknown =
L"Unknown";
107 PWSTR pszUnknownGuid =
L"{4D36E97E-E325-11CE-BFC1-08002BE10318}";
111 (
PBYTE)pszUnknownGuid,
230 if (bNeedReboot !=
NULL)
289 DWORD dwPathLength = 0;
305 TRACE(
"RegOpenKeyEx() failed with error 0x%lx\n", rc);
310 L"Installation Sources",
317 TRACE(
"RegQueryValueEx() failed with error 0x%lx\n", rc);
325 TRACE(
"HeapAlloc() failed\n");
330 L"Installation Sources",
337 TRACE(
"RegQueryValueEx() failed with error 0x%lx\n", rc);
363 DWORD CustomPathLength;
378 TRACE(
"HeapAlloc() failed\n");
387 TRACE(
"ComboBox_GetCount() failed\n");
390 for (
i = 0;
i < ItemsCount;
i++)
395 TRACE(
"ComboBox_GetLBTextLen() failed\n");
406 TRACE(
"HeapAlloc() failed\n");
412 for (
i = 0;
i < ItemsCount;
i++)
417 TRACE(
"ComboBox_GetLBText() failed\n");
421 UseCustomPath =
FALSE;
445 TRACE(
"RegOpenKeyEx() failed with error 0x%lx\n", rc);
450 L"Installation Sources",
457 TRACE(
"RegSetValueEx() failed with error 0x%lx\n", rc);
506 (
WPARAM)DevInstData->hTitleFont,
514 (
LPARAM)DevInstData->buffer);
523 if (!DevInstData->bUpdate)
526 &DevInstData->devInfoData,
630 HWND hwndControl, hwndCombo;
727 IMalloc_Free(
malloc, pidl);
812 DevInstData->hDialog = hwndDlg;
823 (
LPARAM)DevInstData->buffer);
907 DevInstData->hDialog = hwndDlg;
918 (
LPARAM)DevInstData->drvInfoData.Description);
1031 (
WPARAM)DevInstData->hTitleFont,
1037 DevInstData->devInfoData.DevInst,
1039 &DisableableDevice);
1072 &DisableableDevice) &&
1073 DisableableDevice &&
1150 (
LPARAM)DevInstData->drvInfoData.Description);
1157 (
WPARAM)DevInstData->hTitleFont,
1229 (
LPARAM)DevInstData->drvInfoData.Description);
1236 (
WPARAM)DevInstData->hTitleFont,
1308 (
LPARAM)DevInstData->drvInfoData.Description);
1315 (
WPARAM)DevInstData->hTitleFont,
1355 NONCLIENTMETRICSW ncm;
1361 ncm.cbSize =
sizeof(NONCLIENTMETRICSW);
1364 LogFont = ncm.lfMessageFont;
1396 psp.lParam = (
LPARAM)DevInstData;
1449 psh.dwFlags = PSH_WIZARD97 | PSH_WATERMARK | PSH_HEADER;
1453 psh.nStartPage = startPage;
PRTL_UNICODE_STRING_BUFFER Path
#define RegCloseKey(hKey)
EXTERN_C LPITEMIDLIST WINAPI SHBrowseForFolderW(LPBROWSEINFOW lpbi)
#define CM_PROB_FAILED_INSTALL
#define CM_SET_DEVNODE_PROBLEM_OVERRIDE
CONFIGRET WINAPI CM_Get_DevNode_Status_Ex(_Out_ PULONG pulStatus, _Out_ PULONG pulProblemNumber, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
CONFIGRET WINAPI CM_Set_DevNode_Problem(_In_ DEVINST dnDevInst, _In_ ULONG ulProblem, _In_ ULONG ulFlags)
static HINSTANCE hDllInstance
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
static const WCHAR Title[]
#define HeapFree(x, y, z)
static void cleanup(void)
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)
#define IDC_RADIO_SEARCHHERE
#define IDS_CHSOURCE_TITLE
#define IDS_SEARCHDRV_TITLE
#define IDS_INSTALLDRV_TITLE
#define IDS_INSTALLWIZARDTITLE
#define IDD_INSTALLFAILED
#define IDS_BROWSE_FOR_FOLDER_TITLE
#define IDS_UPDATEWIZARDTITLE
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
BOOL WINAPI SetupDiCallClassInstaller(DI_FUNCTION InstallFunction, HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData)
BOOL WINAPI SetupDiSetDeviceRegistryPropertyW(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Property, const BYTE *PropertyBuffer, DWORD PropertyBufferSize)
BOOL WINAPI SetupDiDestroyDriverInfoList(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN DWORD DriverType)
HRESULT WINAPI SHGetMalloc(LPMALLOC *lpmal)
return pProvider IsEnabled(ProviderControl)
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
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
struct _PSP * HPROPSHEETPAGE
static HFONT CreateTitleFont(VOID)
static INT_PTR CALLBACK NoDriverDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
static DWORD WINAPI InstallDriverProc(IN LPVOID lpParam)
static INT_PTR CALLBACK NeedRebootDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
static INT_PTR CALLBACK WelcomeDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
static VOID PopulateCustomPathCombo(IN HWND hwndCombo)
static BOOL StartDevice(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DevInfoData OPTIONAL, IN BOOL bEnable, IN DWORD HardwareProfile OPTIONAL, OUT BOOL *bNeedReboot OPTIONAL)
static INT_PTR CALLBACK FinishDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
static INT CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
static DWORD WINAPI FindDriverProc(IN LPVOID lpParam)
static void IncludePath(HWND Dlg, BOOL Enabled)
static BOOL IsDeviceStarted(IN DEVINST DevInst, IN HMACHINE hMachine, OUT BOOL *IsEnabled)
BOOL DisplayWizard(IN PDEVINSTDATA DevInstData, IN HWND hwndParent, IN UINT startPage)
static void AutoDriver(HWND Dlg, BOOL Enabled)
static INT_PTR CALLBACK InstallDrvDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
static VOID SaveCustomPath(IN HWND hwndCombo)
static INT_PTR CALLBACK SearchDrvDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
static INT_PTR CALLBACK CHSourceDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
static VOID CenterWindow(IN HWND hWnd)
static BOOL CanDisableDevice(IN DEVINST DevInst, IN HMACHINE hMachine, OUT BOOL *CanDisable)
static INT_PTR CALLBACK InstallFailedDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
static BOOL SetFailedInstall(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DevInfoData OPTIONAL, IN BOOLEAN Set)
BOOL ScanFoldersForDriver(IN PDEVINSTDATA DevInstData)
BOOL PrepareFoldersToScan(IN PDEVINSTDATA DevInstData, IN BOOL IncludeRemovableDevices, IN BOOL IncludeCustomPath, IN HWND hwndCombo OPTIONAL)
BOOL InstallCurrentDriver(IN PDEVINSTDATA DevInstData)
BOOL CheckBestDriver(_In_ PDEVINSTDATA DevInstData, _In_ PCWSTR pszDir)
#define WM_SEARCH_FINISHED
struct _DEVINSTDATA * PDEVINSTDATA
#define WM_INSTALL_FINISHED
#define UNREFERENCED_PARAMETER(P)
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define MAKEINTRESOURCE(i)
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
#define CreatePropertySheetPage
#define PropSheet_SetWizButtons(d, f)
#define PropSheet_SetCurSelByID(d, i)
#define CONFIGFLAG_FAILEDINSTALL
#define REGSTR_PATH_SETUP
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
struct _SP_CLASSINSTALL_HEADER SP_CLASSINSTALL_HEADER
#define SetupDiGetDeviceInstallParams
SP_DEVINSTALL_PARAMS_A SP_DEVINSTALL_PARAMS
#define SetupDiSetClassInstallParams
#define SetupDiGetDeviceRegistryProperty
#define DICS_FLAG_CONFIGSPECIFIC
#define SetupDiSetDeviceRegistryProperty
#define SPDRP_CONFIGFLAGS
#define DIF_PROPERTYCHANGE
#define SPDIT_COMPATDRIVER
#define BIF_RETURNONLYFSDIRS
#define BFFM_SETSELECTION
#define BIF_NONEWFOLDERBUTTON
HRESULT WINAPI SHAutoComplete(HWND hwndEdit, DWORD dwFlags)
#define SHACF_FILESYS_DIRS
ITEMIDLIST UNALIGNED * LPITEMIDLIST
PULONG MinorVersion OPTIONAL
base for all directory entries
WCHAR lfFaceName[LF_FACESIZE]
SP_DEVINFO_DATA devInfoData
SP_CLASSINSTALL_HEADER ClassInstallHeader
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
DWORD WINAPI GetLastError(void)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define ComboBox_SetCurSel(hwndCtl, index)
#define ComboBox_GetTextLength(hwndCtl)
#define ComboBox_GetCount(hwndCtl)
#define ComboBox_GetLBText(hwndCtl, index, lpszBuffer)
#define ComboBox_AddString(hwndCtl, lpsz)
#define ComboBox_ResetContent(hwndCtl)
#define ComboBox_GetLBTextLen(hwndCtl, index)
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
#define HKEY_LOCAL_MACHINE
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HWND WINAPI GetDesktopWindow(void)
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
UINT WINAPI IsDlgButtonChecked(_In_ HWND, _In_ int)
BOOL WINAPI GetComboBoxInfo(_In_ HWND, _Inout_ PCOMBOBOXINFO)
struct tagNMHDR * LPNMHDR
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
HDC WINAPI GetDC(_In_opt_ HWND)
int WINAPI GetWindowTextLengthW(_In_ HWND)
HWND WINAPI GetParent(_In_ HWND)
#define SystemParametersInfo
#define SendDlgItemMessage
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)