658{
663
665
667 {
668
670 }
671
673 if (!DevInstData)
674 {
675 TRACE(
"HeapAlloc() failed\n");
678 }
679
680
683
684
687 {
688 TRACE(
"SetupDiCreateDeviceInfoListExW() failed with error 0x%x\n",
GetLastError());
690 }
691
697 0,
700 {
701 TRACE(
"SetupDiOpenDeviceInfoW() failed with error 0x%x (InstanceId %s)\n",
705 }
706
715
717 {
720 {
721 TRACE(
"HeapAlloc() failed\n");
723 }
724 else
725 {
733 }
734 }
736 {
737 TRACE(
"SetupDiGetDeviceRegistryProperty() failed with error 0x%x (InstanceId %s)\n",
740 }
741
747 (
BYTE *)&config_flags,
748 sizeof(config_flags),
750 {
752 {
753
754 TRACE(
"Device is disabled\n");
757 }
758 }
759
761
762
764 {
767 }
769 {
770
772 TRACE(
"InstallCurrentDriver() returned %d\n",
retval);
774 {
775
781 &installParams))
782 {
784 {
785 TRACE(
"Displaying 'Reboot' wizard page\n");
787 }
788 }
789 }
791 }
793 {
794
795 TRACE(
"No wizard\n");
797 }
798
799
800 TRACE(
"Need to show install wizard\n");
802
804 if (DevInstData)
805 {
807 {
809 TRACE(
"SetupDiDestroyDriverInfoList() failed with error 0x%lx\n",
GetLastError());
810 }
812 {
814 TRACE(
"SetupDiDestroyDeviceInfoList() failed with error 0x%lx\n",
GetLastError());
815 }
818 }
819
821}
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INSUFFICIENT_BUFFER
#define INVALID_HANDLE_VALUE
#define HeapFree(x, y, z)
#define ERROR_ACCESS_DENIED
static void cleanup(void)
VOID WINAPI ExitProcess(IN UINT uExitCode)
HDEVINFO WINAPI SetupDiCreateDeviceInfoListExW(const GUID *ClassGuid, HWND hwndParent, PCWSTR MachineName, PVOID Reserved)
BOOL WINAPI SetupDiGetDeviceRegistryPropertyW(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Property, PDWORD PropertyRegDataType, PBYTE PropertyBuffer, DWORD PropertyBufferSize, PDWORD RequiredSize)
BOOL WINAPI SetupDiOpenDeviceInfoW(IN HDEVINFO DeviceInfoSet, IN PCWSTR DeviceInstanceId, IN HWND hwndParent OPTIONAL, IN DWORD OpenFlags, OUT PSP_DEVINFO_DATA DeviceInfoData OPTIONAL)
BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo)
BOOL WINAPI SetupDiDestroyDriverInfoList(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN DWORD DriverType)
_Must_inspect_result_ _In_opt_ PVOID _In_opt_ PVOID InstanceId
static BOOL IsUserAdmin(VOID)
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 DisplayWizard(IN PDEVINSTDATA DevInstData, IN HWND hwndParent, IN UINT startPage)
#define CONFIGFLAG_FAILEDINSTALL
#define SetupDiGetDeviceInstallParams
SP_DEVINSTALL_PARAMS_A SP_DEVINSTALL_PARAMS
#define SetupDiGetDeviceRegistryProperty
struct _SP_DEVINFO_DATA SP_DEVINFO_DATA
#define SPDRP_CONFIGFLAGS
#define SPDIT_COMPATDRIVER
SP_DEVINFO_DATA devInfoData
DWORD WINAPI GetLastError(void)
#define ERROR_GEN_FAILURE