662{
667
669
671 {
672
674 }
675
677 if (!DevInstData)
678 {
679 TRACE(
"HeapAlloc() failed\n");
682 }
683
684
687
688
691 {
692 TRACE(
"SetupDiCreateDeviceInfoListExW() failed with error 0x%x\n",
GetLastError());
694 }
695
701 0,
704 {
705 TRACE(
"SetupDiOpenDeviceInfoW() failed with error 0x%x (InstanceId %s)\n",
709 }
710
719
721 {
724 {
725 TRACE(
"HeapAlloc() failed\n");
727 }
728 else
729 {
737 }
738 }
740 {
741 TRACE(
"SetupDiGetDeviceRegistryProperty() failed with error 0x%x (InstanceId %s)\n",
744 }
745
751 (
BYTE *)&config_flags,
752 sizeof(config_flags),
754 {
756 {
757
758 TRACE(
"Device is disabled\n");
761 }
762 }
763
765
766
768 {
771 }
773 {
774
776 TRACE(
"InstallCurrentDriver() returned %d\n",
retval);
778 {
779
785 &installParams))
786 {
788 {
789 TRACE(
"Displaying 'Reboot' wizard page\n");
791 }
792 }
793 }
795 }
797 {
798
799 TRACE(
"No wizard\n");
801 }
802
803
804 TRACE(
"Need to show install wizard\n");
806
808 if (DevInstData)
809 {
811 {
813 TRACE(
"SetupDiDestroyDriverInfoList() failed with error 0x%lx\n",
GetLastError());
814 }
816 {
818 TRACE(
"SetupDiDestroyDeviceInfoList() failed with error 0x%lx\n",
GetLastError());
819 }
822 }
823
825}
#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