30{
37
38 DPRINT(
"InstallCompositeBattery(%p %p %p)\n",
40
44 {
47 }
48
52 if (NewDeviceInfoData ==
NULL)
53 {
55 goto done;
56 }
57
60 L"Root\\COMPOSITE_BATTERY\\0000",
61 &GUID_DEVCLASS_SYSTEM,
64 0,
65 NewDeviceInfoData))
66 {
69 {
71 goto done;
72 }
73
74 DPRINT1(
"SetupDiCreateDeviceInfoW() failed (Error %lu 0x%08lx)\n", dwError, dwError);
75 goto done;
76 }
77
79 NewDeviceInfoData,
80 0,
84 {
86 DPRINT1(
"SetupDiRegisterDeviceInfo() failed (Error %lu 0x%08lx)\n", dwError, dwError);
87 goto done;
88 }
89
90 bDeviceRegistered =
TRUE;
91
94
96 NewDeviceInfoData,
100 {
102 DPRINT1(
"SetupDiSetDeviceRegistryPropertyW() failed (Error %lu 0x%08lx)\n", dwError, dwError);
103 goto done;
104 }
105
107 NewDeviceInfoData,
109 {
111 DPRINT1(
"SetupDiBuildDriverInfoList() failed (Error %lu 0x%08lx)\n", dwError, dwError);
112 goto done;
113 }
114
115 bHaveDriverInfoList =
TRUE;
116
119 NewDeviceInfoData,
121 0,
122 &DriverInfoData))
123 {
125 DPRINT1(
"SetupDiEnumDriverInfo() failed (Error %lu 0x%08lx)\n", dwError, dwError);
126 goto done;
127 }
128
130 NewDeviceInfoData,
131 &DriverInfoData))
132 {
134 DPRINT1(
"SetupDiSetSelectedDriver() failed (Error %lu 0x%08lx)\n", dwError, dwError);
135 goto done;
136 }
137
139 NewDeviceInfoData))
140 {
142 DPRINT1(
"SetupDiInstallDevice() failed (Error %lu 0x%08lx)\n", dwError, dwError);
143 goto done;
144 }
145
147
148done:
149 if (bHaveDriverInfoList)
151 NewDeviceInfoData,
153
154 if (bDeviceRegistered)
156 NewDeviceInfoData);
157
158 if (NewDeviceInfoData !=
NULL)
160
163
164 return dwError;
165}
static const WCHAR szDeviceId[]
#define INVALID_HANDLE_VALUE
#define HeapFree(x, y, z)
BOOL WINAPI SetupDiRegisterDeviceInfo(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Flags, PSP_DETSIG_CMPPROC CompareProc, PVOID CompareContext, PSP_DEVINFO_DATA DupDeviceInfoData)
BOOL WINAPI SetupDiCreateDeviceInfoW(HDEVINFO DeviceInfoSet, PCWSTR DeviceName, CONST GUID *ClassGuid, PCWSTR DeviceDescription, HWND hwndParent, DWORD CreationFlags, PSP_DEVINFO_DATA DeviceInfoData)
BOOL WINAPI SetupDiDeleteDeviceInfo(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData)
BOOL WINAPI SetupDiInstallDevice(IN HDEVINFO DeviceInfoSet, IN OUT PSP_DEVINFO_DATA DeviceInfoData)
BOOL WINAPI SetupDiSetDeviceRegistryPropertyW(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Property, const BYTE *PropertyBuffer, DWORD PropertyBufferSize)
BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo)
HDEVINFO WINAPI SetupDiCreateDeviceInfoList(const GUID *ClassGuid, HWND hwndParent)
BOOL WINAPI SetupDiBuildDriverInfoList(IN HDEVINFO DeviceInfoSet, IN OUT PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN DWORD DriverType)
BOOL WINAPI SetupDiDestroyDriverInfoList(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN DWORD DriverType)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define ERROR_DEVINST_ALREADY_EXISTS
SP_DRVINFO_DATA_V2 SP_DRVINFO_DATA
#define SetupDiSetSelectedDriver
#define SetupDiEnumDriverInfo
struct _SP_DEVINFO_DATA SP_DEVINFO_DATA
#define SPDIT_COMPATDRIVER