xref: /reactos/sdk/include/psdk/setupapi.h (revision e763bec6)
1 #ifndef _SETUPAPI_H_
2 #define _SETUPAPI_H_
3 
4 #include <commctrl.h>
5 #if defined(_WIN64)
6 #include <pshpack8.h>
7 #else
8 #include <pshpack1.h>
9 #endif
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13 
14 #ifndef _SETUPAPI_
15 #define WINSETUPAPI DECLSPEC_IMPORT
16 #else
17 #define WINSETUPAPI
18 #endif
19 
20 #define LINE_LEN	256
21 #define MAX_INF_STRING_LENGTH	4096
22 #define MAX_TITLE_LEN	60
23 #define MAX_INSTRUCTION_LEN	256
24 #define MAX_LABEL_LEN	30
25 #define MAX_SERVICE_NAME_LEN	256
26 #define MAX_SUBTITLE_LEN	256
27 #define SP_MAX_MACHINENAME_LENGTH	(MAX_PATH + 3)
28 
29 #define COPYFLG_WARN_IF_SKIP	0x00000001
30 #define COPYFLG_NOSKIP	0x00000002
31 #define COPYFLG_NOVERSIONCHECK	0x00000004
32 #define COPYFLG_FORCE_FILE_IN_USE	0x00000008
33 #define COPYFLG_NO_OVERWRITE	0x00000010
34 #define COPYFLG_NO_VERSION_DIALOG	0x00000020
35 #define COPYFLG_OVERWRITE_OLDER_ONLY	0x00000040
36 #define COPYFLG_REPLACEONLY	0x00000400
37 #define COPYFLG_NODECOMP	0x00000800
38 #define COPYFLG_REPLACE_BOOT_FILE	0x00001000
39 #define COPYFLG_NOPRUNE	0x00002000
40 #define DELFLG_IN_USE	0x00000001
41 #define DELFLG_IN_USE1	0x00010000
42 #define DI_REMOVEDEVICE_GLOBAL	0x00000001
43 #define DI_REMOVEDEVICE_CONFIGSPECIFIC	0x00000002
44 #define DI_UNREMOVEDEVICE_CONFIGSPECIFIC	0x00000002
45 #define DI_SHOWOEM	0x00000001
46 #define DI_SHOWCOMPAT	0x00000002
47 #define DI_SHOWCLASS	0x00000004
48 #define DI_SHOWALL	0x00000007
49 #define DI_NOVCP	0x00000008
50 #define DI_DIDCOMPAT	0x00000010
51 #define DI_DIDCLASS	0x00000020
52 #define DI_AUTOASSIGNRES	0x00000040
53 #define DI_NEEDRESTART	0x00000080
54 #define DI_NEEDREBOOT	0x00000100
55 #define DI_NOBROWSE	0x00000200
56 #define DI_MULTMFGS	0x00000400
57 #define DI_DISABLED	0x00000800
58 #define DI_GENERALPAGE_ADDED	0x00001000
59 #define DI_RESOURCEPAGE_ADDED	0x00002000
60 #define DI_PROPERTIES_CHANGE	0x00004000
61 #define DI_INF_IS_SORTED	0x00008000
62 #define DI_ENUMSINGLEINF	0x00010000
63 #define DI_DONOTCALLCONFIGMG	0x00020000
64 #define DI_INSTALLDISABLED	0x00040000
65 #define DI_COMPAT_FROM_CLASS	0x00080000
66 #define DI_CLASSINSTALLPARAMS	0x00100000
67 #define DI_NODI_DEFAULTACTION	0x00200000
68 #define DI_QUIETINSTALL	0x00800000
69 #define DI_NOFILECOPY	0x01000000
70 #define DI_FORCECOPY	0x02000000
71 #define DI_DRIVERPAGE_ADDED	0x04000000
72 #define DI_USECI_SELECTSTRINGS	0x08000000
73 #define DI_OVERRIDE_INFFLAGS	0x10000000
74 #define DI_PROPS_NOCHANGEUSAGE	0x20000000
75 #define DI_NOSELECTICONS	0x40000000
76 #define DI_NOWRITE_IDS	0x80000000
77 #define DI_FLAGSEX_USEOLDINFSEARCH	0x00000001
78 #define DI_FLAGSEX_AUTOSELECTRANK0	0x00000002
79 #define DI_FLAGSEX_CI_FAILED	0x00000004
80 #define DI_FLAGSEX_DIDINFOLIST	0x00000010
81 #define DI_FLAGSEX_DIDCOMPATINFO	0x00000020
82 #define DI_FLAGSEX_FILTERCLASSES	0x00000040
83 #define DI_FLAGSEX_SETFAILEDINSTALL	0x00000080
84 #define DI_FLAGSEX_DEVICECHANGE	0x00000100
85 #define DI_FLAGSEX_ALWAYSWRITEIDS	0x00000200
86 #define DI_FLAGSEX_PROPCHANGE_PENDING	0x00000400
87 #define DI_FLAGSEX_ALLOWEXCLUDEDDRVS	0x00000800
88 #define DI_FLAGSEX_NOUIONQUERYREMOVE	0x00001000
89 #define DI_FLAGSEX_USECLASSFORCOMPAT	0x00002000
90 #define DI_FLAGSEX_OLDINF_IN_CLASSLIST	0x00004000
91 #define DI_FLAGSEX_NO_DRVREG_MODIFY	0x00008000
92 #define DI_FLAGSEX_IN_SYSTEM_SETUP	0x00010000
93 #define DI_FLAGSEX_INET_DRIVER	0x00020000
94 #define DI_FLAGSEX_APPENDDRIVERLIST	0x00040000
95 #define DI_FLAGSEX_PREINSTALLBACKUP	0x00080000
96 #define DI_FLAGSEX_BACKUPONREPLACE	0x00100000
97 #define DI_FLAGSEX_DRIVERLIST_FROM_URL	0x00200000
98 #define DI_FLAGSEX_RESERVED1	0x00400000
99 #define DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS	0x00800000
100 #define DI_FLAGSEX_POWERPAGE_ADDED	0x01000000
101 #if (_SETUPAPI_VER >= 0x0501)
102 #define DI_FLAGSEX_FILTERSIMILARDRIVERS	0x02000000
103 #define DI_FLAGSEX_INSTALLEDDRIVER	0x04000000
104 #define DI_FLAGSEX_NO_CLASSLIST_NODE_MERGE	0x08000000
105 #define DI_FLAGSEX_ALTPLATFORM_DRVSEARCH	0x10000000
106 #define DI_FLAGSEX_RESTART_DEVICE_ONLY	0x20000000
107 #endif
108 #define DIBCI_NOINSTALLCLASS	0x00000001
109 #define DIBCI_NODISPLAYCLASS	0x00000002
110 #define DICD_GENERATE_ID	0x00000001
111 #define DICD_INHERIT_CLASSDRVS	0x00000002
112 #define DICS_ENABLE	1
113 #define DICS_FLAG_GLOBAL	1
114 #define DICS_DISABLE	2
115 #define DICS_FLAG_CONFIGSPECIFIC	2
116 #define DICS_PROPCHANGE	3
117 #define DICS_START	4
118 #define DICS_FLAG_CONFIGGENERAL	4
119 #define DICS_STOP	5
120 #define DIF_SELECTDEVICE                    1
121 #define DIF_INSTALLDEVICE                   2
122 #define DIF_ASSIGNRESOURCES                 3
123 #define DIF_PROPERTIES                      4
124 #define DIF_REMOVE                          5
125 #define DIF_FIRSTTIMESETUP                  6
126 #define DIF_FOUNDDEVICE                     7
127 #define DIF_SELECTCLASSDRIVERS              8
128 #define DIF_VALIDATECLASSDRIVERS            9
129 #define DIF_INSTALLCLASSDRIVERS            10
130 #define DIF_CALCDISKSPACE                  11
131 #define DIF_DESTROYPRIVATEDATA             12
132 #define DIF_VALIDATEDRIVER                 13
133 #define DIF_MOVEDEVICE                     14
134 #define DIF_DETECT                         15
135 #define DIF_INSTALLWIZARD                  16
136 #define DIF_DESTROYWIZARDDATA              17
137 #define DIF_PROPERTYCHANGE                 18
138 #define DIF_ENABLECLASS                    19
139 #define DIF_DETECTVERIFY                   20
140 #define DIF_INSTALLDEVICEFILES             21
141 #define DIF_UNREMOVE                       22
142 #define DIF_SELECTBESTCOMPATDRV            23
143 #define DIF_ALLOW_INSTALL                  24
144 #define DIF_REGISTERDEVICE                 25
145 #define DIF_NEWDEVICEWIZARD_PRESELECT      26
146 #define DIF_NEWDEVICEWIZARD_SELECT         27
147 #define DIF_NEWDEVICEWIZARD_PREANALYZE     28
148 #define DIF_NEWDEVICEWIZARD_POSTANALYZE    29
149 #define DIF_NEWDEVICEWIZARD_FINISHINSTALL  30
150 #define DIF_UNUSED1                        31
151 #define DIF_INSTALLINTERFACES              32
152 #define DIF_DETECTCANCEL                   33
153 #define DIF_REGISTER_COINSTALLERS          34
154 #define DIF_ADDPROPERTYPAGE_ADVANCED       35
155 #define DIF_ADDPROPERTYPAGE_BASIC          36
156 #define DIF_RESERVED1                      37
157 #define DIF_TROUBLESHOOTER                 38
158 #define DIF_POWERMESSAGEWAKE               39
159 #define DIF_ADDREMOTEPROPERTYPAGE_ADVANCED 40
160 #define DIF_UPDATEDRIVER_UI                41
161 #define DIF_FINISHINSTALL_ACTION           42
162 #define DIF_RESERVED2                      48
163 
164 #define DIGCDP_FLAG_BASIC	0x00000001
165 #define DIGCDP_FLAG_ADVANCED	0x00000002
166 #if (_SETUPAPI_VER >= 0x0501)
167 #define DIGCDP_FLAG_REMOTE_BASIC    0x00000003
168 #define DIGCDP_FLAG_REMOTE_ADVANCED 0x00000004
169 #endif
170 #define DIGCF_DEFAULT	0x00000001
171 #define DIGCF_PRESENT	0x00000002
172 #define DIGCF_ALLCLASSES	0x00000004
173 #define DIGCF_PROFILE	0x00000008
174 #define DIGCF_DEVICEINTERFACE	0x00000010
175 #define DIGCF_INTERFACEDEVICE	0x00000010
176 #define DIOCR_INSTALLER	0x00000001
177 #define DIOCR_INTERFACE	0x00000002
178 #define DIODI_NO_ADD	0x00000001
179 #define DIOD_INHERIT_CLASSDRVS	0x00000002
180 #define DIOD_CANCEL_REMOVE	0x00000004
181 #define DIREG_DEV	0x00000001
182 #define DIREG_DRV	0x00000002
183 #define DIREG_BOTH	0x00000004
184 #define DIRID_ABSOLUTE	-1
185 #define DIRID_NULL	0
186 #define DIRID_SRCPATH	1
187 #define DIRID_WINDOWS	10
188 #define DIRID_SYSTEM	11
189 #define DIRID_DRIVERS	12
190 #define DIRID_INF	17
191 #define DIRID_HELP	18
192 #define DIRID_FONTS	20
193 #define DIRID_VIEWERS	21
194 #define DIRID_COLOR	23
195 #define DIRID_APPS	24
196 #define DIRID_SHARED	25
197 #define DIRID_BOOT	30
198 #define DIRID_SYSTEM16	50
199 #define DIRID_SPOOL	51
200 #define DIRID_SPOOLDRIVERS	52
201 #define DIRID_USERPROFILE	53
202 #define DIRID_LOADER	54
203 #define DIRID_PRINTPROCESSOR	55
204 #define DIRID_COMMON_STARTMENU	16406
205 #define DIRID_COMMON_PROGRAMS	16407
206 #define DIRID_COMMON_STARTUP	16408
207 #define DIRID_COMMON_DESKTOPDIRECTORY	16409
208 #define DIRID_COMMON_FAVORITES	16415
209 #define DIRID_COMMON_APPDATA	16419
210 #define DIRID_PROGRAM_FILES	16422
211 #define DIRID_SYSTEM_X86	16425
212 #define DIRID_PROGRAM_FILES_X86	16426
213 #define DIRID_PROGRAM_FILES_COMMON	16427
214 #define DIRID_PROGRAM_FILES_COMMONX86	16428
215 #define DIRID_COMMON_TEMPLATES	16429
216 #define DIRID_COMMON_DOCUMENTS	16430
217 #define DIRID_USER	0x8000
218 #define DIRID_ABSOLUTE_16BIT	0xffff
219 #define DIRID_IOSUBSYS	DIRID_DRIVERS
220 #define DIRID_DEFAULT	DIRID_SYSTEM
221 #define DMI_MASK	0x00000001
222 #define DMI_BKCOLOR	0x00000002
223 #define DMI_USERECT	0x00000004
224 #define DN_ROOT_ENUMERATED	0x00000001
225 #define DN_DRIVER_LOADED	0x00000002
226 #define DN_ENUM_LOADED	0x00000004
227 #define DN_STARTED	0x00000008
228 #define DN_MANUAL	0x00000010
229 #define DN_NEED_TO_ENUM	0x00000020
230 #define DN_NOT_FIRST_TIME	0x00000040
231 #define DN_HARDWARE_ENUM	0x00000080
232 #define DN_LIAR	0x00000100
233 #define DN_HAS_MARK	0x00000200
234 #define DN_HAS_PROBLEM	0x00000400
235 #define DN_FILTERED	0x00000800
236 #define DN_MOVED	0x00001000
237 #define DN_DISABLEABLE	0x00002000
238 #define DN_REMOVABLE	0x00004000
239 #define DN_PRIVATE_PROBLEM	0x00008000
240 #define DN_MF_PARENT	0x00010000
241 #define DN_MF_CHILD	0x00020000
242 #define DN_WILL_BE_REMOVED	0x00040000
243 #define DN_NOT_FIRST_TIMEE	0x00080000
244 #define DN_STOP_FREE_RES	0x00100000
245 #define DN_REBAL_CANDIDATE	0x00200000
246 #define DN_BAD_PARTIAL	0x00400000
247 #define DN_NT_ENUMERATOR	0x00800000
248 #define DN_NT_DRIVER	0x01000000
249 #define DN_NEEDS_LOCKING	0x02000000
250 #define DN_ARM_WAKEUP	0x04000000
251 #define DN_APM_ENUMERATOR	0x08000000
252 #define DN_APM_DRIVER	0x10000000
253 #define DN_SILENT_INSTALL	0x20000000
254 #define DN_NO_SHOW_IN_DM	0x40000000
255 #define DN_BOOT_LOG_PROB	0x80000000
256 #define DNF_DUPDESC	0x00000001
257 #define DNF_OLDDRIVER	0x00000002
258 #define DNF_EXCLUDEFROMLIST	0x00000004
259 #define DNF_NODRIVER	0x00000008
260 #define DNF_LEGACYINF	0x00000010
261 #define DNF_CLASS_DRIVER	0x00000020
262 #define DNF_COMPATIBLE_DRIVER	0x00000040
263 #define DNF_INET_DRIVER	0x00000080
264 #define DNF_UNUSED1	0x00000100
265 #define DNF_INDEXED_DRIVER	0x00000200
266 #define DNF_OLD_INET_DRIVER	0x00000400
267 #define DNF_BAD_DRIVER	0x00000800
268 #define DNF_DUPPROVIDER	0x00001000
269 #define DPROMPT_SUCCESS	0
270 #define DPROMPT_CANCEL	1
271 #define DPROMPT_SKIPFILE	2
272 #define DPROMPT_BUFFERTOOSMALL	3
273 #define DPROMPT_OUTOFMEMORY	4
274 #define DRIVER_HARDWAREID_RANK	0x00000FFF
275 #if (_SETUPAPI_VER >= 0x0600)
276 #define DRIVER_UNTRUSTED_RANK   0x80000000
277 #else
278 #define DRIVER_UNTRUSTED_RANK   0x00008000
279 #endif
280 #define DYNAWIZ_FLAG_PAGESADDED	0x00000001
281 #define DYNAWIZ_FLAG_INSTALLDET_NEXT	0x00000002
282 #define DYNAWIZ_FLAG_INSTALLDET_PREV	0x00000004
283 #define DYNAWIZ_FLAG_ANALYZE_HANDLECONFLICT	0x00000008
284 #define ENABLECLASS_QUERY	0
285 #define ENABLECLASS_SUCCESS	1
286 #define ENABLECLASS_FAILURE	2
287 #define ERROR_EXPECTED_SECTION_NAME	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0)
288 #define ERROR_BAD_SECTION_NAME_LINE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|1)
289 #define ERROR_SECTION_NAME_TOO_LONG	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|2)
290 #define ERROR_GENERAL_SYNTAX	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|3)
291 #define ERROR_WRONG_INF_STYLE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x100)
292 #define ERROR_NOT_INSTALLED	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x1000)
293 #define ERROR_SECTION_NOT_FOUND	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x101)
294 #define ERROR_LINE_NOT_FOUND	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x102)
295 #define ERROR_NO_BACKUP	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x103)
296 #define ERROR_NO_ASSOCIATED_CLASS	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x200)
297 #define ERROR_CLASS_MISMATCH	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x201)
298 #define ERROR_DUPLICATE_FOUND	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x202)
299 #define ERROR_NO_DRIVER_SELECTED	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x203)
300 #define ERROR_KEY_DOES_NOT_EXIST	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x204)
301 #define ERROR_INVALID_DEVINST_NAME	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x205)
302 #define ERROR_INVALID_CLASS	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x206)
303 #define ERROR_DEVINST_ALREADY_EXISTS	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x207)
304 #define ERROR_DEVINFO_NOT_REGISTERED	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x208)
305 #define ERROR_INVALID_REG_PROPERTY	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x209)
306 #define ERROR_NO_INF	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20A)
307 #define ERROR_NO_SUCH_DEVINST	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20B)
308 #define ERROR_CANT_LOAD_CLASS_ICON	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20C)
309 #define ERROR_INVALID_CLASS_INSTALLER	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20D)
310 #define ERROR_DI_DO_DEFAULT	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20E)
311 #define ERROR_DI_NOFILECOPY	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20F)
312 #define ERROR_INVALID_HWPROFILE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x210)
313 #define ERROR_NO_DEVICE_SELECTED	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x211)
314 #define ERROR_DEVINFO_LIST_LOCKED	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x212)
315 #define ERROR_DEVINFO_DATA_LOCKED	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x213)
316 #define ERROR_DI_BAD_PATH	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x214)
317 #define ERROR_NO_CLASSINSTALL_PARAMS	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x215)
318 #define ERROR_FILEQUEUE_LOCKED	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x216)
319 #define ERROR_BAD_SERVICE_INSTALLSECT	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x217)
320 #define ERROR_NO_CLASS_DRIVER_LIST	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x218)
321 #define ERROR_NO_ASSOCIATED_SERVICE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x219)
322 #define ERROR_NO_DEFAULT_DEVICE_INTERFACE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21A)
323 #define ERROR_DEVICE_INTERFACE_ACTIVE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21B)
324 #define ERROR_DEVICE_INTERFACE_REMOVED	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21C)
325 #define ERROR_BAD_INTERFACE_INSTALLSECT	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21D)
326 #define ERROR_NO_SUCH_INTERFACE_CLASS	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21E)
327 #define ERROR_INVALID_REFERENCE_STRING	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21F)
328 #define ERROR_INVALID_MACHINENAME	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x220)
329 #define ERROR_REMOTE_COMM_FAILURE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x221)
330 #define ERROR_MACHINE_UNAVAILABLE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x222)
331 #define ERROR_NO_CONFIGMGR_SERVICES	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x223)
332 #define ERROR_INVALID_PROPPAGE_PROVIDER	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x224)
333 #define ERROR_NO_SUCH_DEVICE_INTERFACE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x225)
334 #define ERROR_DI_POSTPROCESSING_REQUIRED	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x226)
335 #define ERROR_INVALID_COINSTALLER	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x227)
336 #define ERROR_NO_COMPAT_DRIVERS	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x228)
337 #define ERROR_NO_DEVICE_ICON	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x229)
338 #define ERROR_INVALID_INF_LOGCONFIG	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22A)
339 #define ERROR_DI_DONT_INSTALL	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22B)
340 #define ERROR_INVALID_FILTER_DRIVER	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22C)
341 #define ERROR_NON_WINDOWS_NT_DRIVER	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22D)
342 #define ERROR_NON_WINDOWS_DRIVER	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22E)
343 #define ERROR_NO_CATALOG_FOR_OEM_INF	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22F)
344 #define ERROR_DEVINSTALL_QUEUE_NONNATIVE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x230)
345 #define ERROR_NOT_DISABLEABLE	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x231)
346 #define ERROR_CANT_REMOVE_DEVINST	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x232)
347 #define ERROR_IN_WOW64	(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x235)
348 #define ERROR_INTERFACE_DEVICE_ACTIVE	ERROR_DEVICE_INTERFACE_ACTIVE
349 #define ERROR_INTERFACE_DEVICE_REMOVED	ERROR_DEVICE_INTERFACE_REMOVED
350 #define ERROR_NO_DEFAULT_INTERFACE_DEVICE	ERROR_NO_DEFAULT_DEVICE_INTERFACE
351 #define ERROR_NO_SUCH_INTERFACE_DEVICE	ERROR_NO_SUCH_DEVICE_INTERFACE
352 #define ERROR_WRONG_INF_TYPE              (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x24A)
353 
354 #define FILEOP_COPY	0
355 #define FILEOP_ABORT	0
356 #define FILE_COMPRESSION_NONE	0
357 #define FILEOP_RENAME	1
358 #define FILEOP_DOIT	1
359 #define FILE_COMPRESSION_WINLZA	1
360 #define FILEOP_DELETE	2
361 #define FILEOP_SKIP	2
362 #define FILE_COMPRESSION_MSZIP	2
363 #define FILEOP_BACKUP	3
364 #define FILE_COMPRESSION_NTCAB	3
365 #define FILEOP_NEWPATH	4
366 #define FILEOP_RETRY	FILEOP_DOIT
367 #define FLG_ADDREG_TYPE_SZ	0x00000000
368 #define FLG_ADDREG_BINVALUETYPE	0x00000001
369 #define FLG_ADDREG_NOCLOBBER	0x00000002
370 #define FLG_ADDREG_DELVAL	0x00000004
371 #define FLG_ADDREG_APPEND	0x00000008
372 #define FLG_ADDREG_KEYONLY	0x00000010
373 #define FLG_ADDREG_OVERWRITEONLY	0x00000020
374 #if (_SETUPAPI_VER >= 0x0501)
375 #define FLG_ADDREG_64BITKEY	0x00001000
376 #define FLG_ADDREG_KEYONLY_COMMON	0x00002000
377 #define FLG_ADDREG_32BITKEY	0x00004000
378 #define FLG_ADDREG_DELREG_BIT	0x00008000
379 #endif
380 #define FLG_ADDREG_TYPE_MULTI_SZ	0x00010000
381 #define FLG_ADDREG_TYPE_EXPAND_SZ	0x00020000
382 #define FLG_ADDREG_TYPE_BINARY	(0x00000000|FLG_ADDREG_BINVALUETYPE)
383 #define FLG_ADDREG_TYPE_DWORD	(0x00010000|FLG_ADDREG_BINVALUETYPE)
384 #define FLG_ADDREG_TYPE_NONE	(0x00020000|FLG_ADDREG_BINVALUETYPE)
385 #define FLG_ADDREG_TYPE_MASK	(0xFFFF0000|FLG_ADDREG_BINVALUETYPE)
386 #define FLG_DELREG_VALUE	0x00000000
387 #if (_SETUPAPI_VER >= 0x0501)
388 #define FLG_DELREG_TYPE_MASK	FLG_ADDREG_TYPE_MASK
389 #define FLG_DELREG_TYPE_SZ	FLG_ADDREG_TYPE_SZ
390 #define FLG_DELREG_TYPE_MULTI_SZ	FLG_ADDREG_TYPE_MULTI_SZ
391 #define FLG_DELREG_TYPE_EXPAND_SZ	FLG_ADDREG_TYPE_EXPAND_SZ
392 #define FLG_DELREG_TYPE_BINARY	FLG_ADDREG_TYPE_BINARY
393 #define FLG_DELREG_TYPE_DWORD	FLG_ADDREG_TYPE_DWORD
394 #define FLG_DELREG_TYPE_NONE	FLG_ADDREG_TYPE_NONE
395 #define FLG_DELREG_64BITKEY	FLG_ADDREG_64BITKEY
396 #define FLG_DELREG_KEYONLY_COMMON	FLG_ADDREG_KEYONLY_COMMON
397 #define FLG_DELREG_32BITKEY	FLG_ADDREG_32BITKEY
398 #define FLG_DELREG_OPERATION_MASK	0x000000FE
399 #define FLG_DELREG_MULTI_SZ_DELSTRING	(0x00000002|FLG_DELREG_TYPE_MULTI_SZ|FLG_ADDREG_DELREG_BIT)
400 #endif
401 #define FLG_BITREG_CLEARBITS	0x00000000
402 #define FLG_BITREG_SETBITS	0x00000001
403 #define FLG_PROFITEM_CURRENTUSER	0x00000001
404 #define FLG_PROFITEM_DELETE	0x00000002
405 #define FLG_PROFITEM_GROUP	0x00000004
406 #define FLG_PROFITEM_CSIDL	0x00000008
407 #define FLG_REGSVR_DLLREGISTER	0x00000001
408 #define FLG_REGSVR_DLLINSTALL	0x00000002
409 #define MIN_IDD_DYNAWIZ_RESOURCE_ID	10000
410 #define MAX_IDD_DYNAWIZ_RESOURCE_ID	11000
411 #define IDD_DYNAWIZ_FIRSTPAGE	10000
412 #define IDD_DYNAWIZ_SELECT_PREVPAGE	10001
413 #define IDD_DYNAWIZ_SELECT_NEXTPAGE	10002
414 #define IDD_DYNAWIZ_ANALYZE_PREVPAGE	10003
415 #define IDD_DYNAWIZ_ANALYZE_NEXTPAGE	10004
416 #define IDD_DYNAWIZ_INSTALLDETECTED_PREVPAGE	10006
417 #define IDD_DYNAWIZ_INSTALLDETECTED_NEXTPAGE	10007
418 #define IDD_DYNAWIZ_INSTALLDETECTED_NODEVS	10008
419 #define IDD_DYNAWIZ_SELECTDEV_PAGE	10009
420 #define IDD_DYNAWIZ_ANALYZEDEV_PAGE	10010
421 #define IDD_DYNAWIZ_INSTALLDETECTEDDEVS_PAGE	10011
422 #define IDD_DYNAWIZ_SELECTCLASS_PAGE	10012
423 #define IDF_NOBROWSE	0x00000001
424 #define IDF_NOSKIP	0x00000002
425 #define IDF_NODETAILS	0x00000004
426 #define IDF_NOCOMPRESSED	0x00000008
427 #define IDF_CHECKFIRST	0x00000100
428 #define IDF_NOBEEP	0x00000200
429 #define IDF_NOFOREGROUND	0x00000400
430 #define IDF_WARNIFSKIP	0x00000800
431 #define IDF_OEMDISK	0x80000000
432 #define IDI_RESOURCEFIRST	159
433 #define IDI_RESOURCE	159
434 #define IDI_RESOURCELAST	161
435 #define IDI_RESOURCEOVERLAYFIRST	161
436 #define IDI_RESOURCEOVERLAYLAST	161
437 #define IDI_CONFLICT	161
438 #define IDI_PROBLEM_OVL	500
439 #define IDI_DISABLED_OVL	501
440 #define IDI_FORCED_OVL	502
441 #define IDI_CLASSICON_OVERLAYFIRST	500
442 #define IDI_CLASSICON_OVERLAYLAST	502
443 #define INF_STYLE_NONE	0x00000000
444 #define INF_STYLE_OLDNT	0x00000001
445 #define INF_STYLE_WIN4	0x00000002
446 #define INF_STYLE_CACHE_ENABLE	0x00000010
447 #define INF_STYLE_CACHE_DISABLE	0x00000020
448 #define INFINFO_INF_SPEC_IS_HINF	1
449 #define INFINFO_INF_NAME_IS_ABSOLUTE	2
450 #define INFINFO_DEFAULT_SEARCH	3
451 #define INFINFO_REVERSE_DEFAULT_SEARCH	4
452 #define INFINFO_INF_PATH_LIST_SEARCH	5
453 #define LogSevInformation	0
454 #define LogSevWarning	1
455 #define LogSevError	2
456 #define LogSevFatalError	3
457 #define LogSevMaximum	4
458 #define LogSeverity	DWORD
459 #define MAX_INSTALLWIZARD_DYNAPAGES	20
460 #define NDW_INSTALLFLAG_DIDFACTDEFS	0x00000001
461 #define NDW_INSTALLFLAG_HARDWAREALLREADYIN	0x00000002
462 #define NDW_INSTALLFLAG_NEEDSHUTDOWN	0x00000200
463 #define NDW_INSTALLFLAG_EXPRESSINTRO	0x00000400
464 #define NDW_INSTALLFLAG_SKIPISDEVINSTALLED	0x00000800
465 #define NDW_INSTALLFLAG_NODETECTEDDEVS	0x00001000
466 #define NDW_INSTALLFLAG_INSTALLSPECIFIC	0x00002000
467 #define NDW_INSTALLFLAG_SKIPCLASSLIST	0x00004000
468 #define NDW_INSTALLFLAG_CI_PICKED_OEM	0x00008000
469 #define NDW_INSTALLFLAG_PCMCIAMODE	0x00010000
470 #define NDW_INSTALLFLAG_PCMCIADEVICE	0x00020000
471 #define NDW_INSTALLFLAG_USERCANCEL	0x00040000
472 #define NDW_INSTALLFLAG_KNOWNCLASS	0x00080000
473 #define NDW_INSTALLFLAG_NEEDRESTART	0x00000080
474 #define NDW_INSTALLFLAG_NEEDREBOOT	0x00000100
475 #define SETDIRID_NOT_FULL_PATH	0x00000001
476 #define SP_COPY_DELETESOURCE	0x0000001
477 #define SP_COPY_REPLACEONLY	0x0000002
478 #define SP_COPY_NEWER	0x0000004
479 #define SP_COPY_NEWER_OR_SAME	0x0000004
480 #define SP_COPY_NOOVERWRITE	0x0000008
481 #define SP_COPY_NODECOMP	0x0000010
482 #define SP_COPY_LANGUAGEAWARE	0x0000020
483 #define SP_COPY_SOURCE_ABSOLUTE	0x0000040
484 #define SP_COPY_SOURCEPATH_ABSOLUTE	0x0000080
485 #define SP_COPY_IN_USE_NEEDS_REBOOT	0x0000100
486 #define SP_COPY_FORCE_IN_USE	0x0000200
487 #define SP_COPY_NOSKIP	0x0000400
488 #define SP_COPY_FORCE_NOOVERWRITE	0x0001000
489 #define SP_COPY_FORCE_NEWER	0x0002000
490 #define SP_COPY_WARNIFSKIP	0x0004000
491 #define SP_COPY_NOBROWSE	0x0008000
492 #define SP_COPY_NEWER_ONLY	0x0010000
493 #define SP_COPY_SOURCE_SIS_MASTER	0x0020000
494 #define SP_COPY_OEMINF_CATALOG_ONLY	0x0040000
495 #define SP_COPY_REPLACE_BOOT_FILE	0x0080000
496 #define SP_COPY_NOPRUNE	0x0100000
497 #define SP_FLAG_CABINETCONTINUATION	0x0000800
498 #define SPCRP_SECURITY	23
499 #define SPCRP_SECURITY_SDS	24
500 #define SPCRP_DEVTYPE	25
501 #define SPCRP_EXCLUSIVE	26
502 #define SPCRP_CHARACTERISTICS	27
503 #define SPCRP_MAXIMUM_PROPERTY	28
504 #define SPDIT_NODRIVER	0
505 #define SPDIT_CLASSDRIVER	1
506 #define SPDIT_COMPATDRIVER	2
507 #define SPDRP_DEVICEDESC	0
508 #define SPDRP_HARDWAREID	1
509 #define SPDRP_COMPATIBLEIDS	2
510 #define SPDRP_UNUSED0	3
511 #define SPDRP_SERVICE	4
512 #define SPDRP_UNUSED1	5
513 #define SPDRP_UNUSED2	6
514 #define SPDRP_CLASS	7
515 #define SPDRP_CLASSGUID	8
516 #define SPDRP_DRIVER	9
517 #define SPDRP_CONFIGFLAGS	10
518 #define SPDRP_MFG	11
519 #define SPDRP_FRIENDLYNAME	12
520 #define SPDRP_LOCATION_INFORMATION	13
521 #define SPDRP_PHYSICAL_DEVICE_OBJECT_NAME	14
522 #define SPDRP_CAPABILITIES	15
523 #define SPDRP_UI_NUMBER	16
524 #define SPDRP_UPPERFILTERS	17
525 #define SPDRP_LOWERFILTERS	18
526 #define SPDRP_BUSTYPEGUID	19
527 #define SPDRP_LEGACYBUSTYPE	20
528 #define SPDRP_BUSNUMBER	21
529 #define SPDRP_ENUMERATOR_NAME	22
530 #define SPDRP_SECURITY	23
531 #define SPDRP_SECURITY_SDS	24
532 #define SPDRP_DEVTYPE	25
533 #define SPDRP_EXCLUSIVE	26
534 #define SPDRP_CHARACTERISTICS	27
535 #define SPDRP_ADDRESS	28
536 #define SPDRP_UI_NUMBER_DESC_FORMAT	29
537 #define SPDRP_DEVICE_POWER_DATA	30
538 #define SPDRP_REMOVAL_POLICY	31
539 #define SPDRP_REMOVAL_POLICY_HW_DEFAULT	32
540 #define SPDRP_REMOVAL_POLICY_OVERRIDE	33
541 #define SPDRP_INSTALL_STATE	34
542 #define SPDRP_MAXIMUM_PROPERTY	35
543 #define SPDSL_IGNORE_DISK	1
544 #define SPDSL_DISALLOW_NEGATIVE_ADJUST	2
545 
546 #define SPFILENOTIFY_STARTQUEUE	1
547 #define SPFILENOTIFY_ENDQUEUE	2
548 #define SPFILENOTIFY_STARTSUBQUEUE	3
549 #define SPFILENOTIFY_ENDSUBQUEUE	4
550 #define SPFILENOTIFY_STARTDELETE	5
551 #define SPFILENOTIFY_ENDDELETE	6
552 #define SPFILENOTIFY_DELETEERROR	7
553 #define SPFILENOTIFY_STARTRENAME	8
554 #define SPFILENOTIFY_ENDRENAME	9
555 #define SPFILENOTIFY_RENAMEERROR	10
556 #define SPFILENOTIFY_STARTCOPY	11
557 #define SPFILENOTIFY_ENDCOPY	12
558 #define SPFILENOTIFY_COPYERROR	13
559 #define SPFILENOTIFY_NEEDMEDIA	14
560 #define SPFILENOTIFY_QUEUESCAN	15
561 #define SPFILENOTIFY_CABINETINFO	16
562 #define SPFILENOTIFY_FILEINCABINET	17
563 #define SPFILENOTIFY_NEEDNEWCABINET	18
564 #define SPFILENOTIFY_FILEEXTRACTED	19
565 #define SPFILENOTIFY_FILEOPDELAYED	20
566 #define SPFILENOTIFY_STARTBACKUP	21
567 #define SPFILENOTIFY_BACKUPERROR	22
568 #define SPFILENOTIFY_ENDBACKUP	23
569 #define SPFILENOTIFY_QUEUESCAN_EX	24
570 #define SPFILENOTIFY_STARTREGISTRATION	25
571 #define SPFILENOTIFY_ENDREGISTRATION	26
572 #define SPFILENOTIFY_LANGMISMATCH	0x00010000
573 #define SPFILENOTIFY_TARGETEXISTS	0x00020000
574 #define SPFILENOTIFY_TARGETNEWER	0x00040000
575 #define SPFILELOG_SYSTEMLOG	0x00000001
576 #define SPFILELOG_OEMFILE	0x00000001
577 #define SPFILELOG_FORCENEW	0x00000002
578 #define SPFILELOG_QUERYONLY	0x00000004
579 #define SPFILEQ_FILE_IN_USE	0x00000001
580 #define SPFILEQ_REBOOT_RECOMMENDED	0x00000002
581 #define SPFILEQ_REBOOT_IN_PROGRESS	0x00000004
582 #define SPINT_ACTIVE	0x00000001
583 #define SPINT_DEFAULT	0x00000002
584 #define SPINT_REMOVED	0x00000004
585 #define SPID_ACTIVE	0x00000001
586 #define SPID_DEFAULT	0x00000002
587 #define SPID_REMOVED	0x00000004
588 #define SPINST_LOGCONFIG	0x00000001
589 #define SPINST_INIFILES	0x00000002
590 #define SPINST_REGISTRY	0x00000004
591 #define SPINST_INI2REG	0x00000008
592 #define SPINST_FILES	0x00000010
593 #define SPINST_BITREG	0x00000020
594 #define SPINST_REGSVR	0x00000040
595 #define SPINST_UNREGSVR	0x00000080
596 #define SPINST_PROFILEITEMS	0x00000100
597 #if (_SETUPAPI_VER >= 0x0501)
598 #define SPINST_COPYINF	0x00000200
599 #define SPINST_ALL	0x000003ff
600 #else
601 #define SPINST_ALL	0x000001ff
602 #endif
603 #define SPINST_SINGLESECTION	0x00010000
604 #define SPINST_LOGCONFIG_IS_FORCED	0x00020000
605 #define SPINST_LOGCONFIGS_ARE_OVERRIDES	0x00040000
606 #if (_SETUPAPI_VER >= 0x0501)
607 #define SPINST_REGISTERCALLBACKAWARE	0x00080000
608 #endif
609 #define SPOST_NONE	0
610 #define SPOST_PATH	1
611 #define SPOST_URL	2
612 #define SPOST_MAX	3
613 #define SPPSR_SELECT_DEVICE_RESOURCES	1
614 #define SPPSR_ENUM_BASIC_DEVICE_PROPERTIES	2
615 #define SPPSR_ENUM_ADV_DEVICE_PROPERTIES	3
616 #define SPQ_SCAN_FILE_PRESENCE	0x00000001
617 #define SPQ_DELAYED_COPY	0x00000001
618 #define SPQ_SCAN_FILE_VALIDITY	0x00000002
619 #define SPQ_SCAN_USE_CALLBACK	0x00000004
620 #define SPQ_SCAN_USE_CALLBACKEX	0x00000008
621 #define SPQ_SCAN_INFORM_USER	0x00000010
622 #define SPQ_SCAN_PRUNE_COPY_QUEUE	0x00000020
623 #define SPRDI_FIND_DUPS	0x00000001
624 
625 #define SPSVCINST_TAGTOFRONT               0x00000001
626 #define SPSVCINST_ASSOCSERVICE             0x00000002
627 #define SPSVCINST_DELETEEVENTLOGENTRY      0x00000004
628 #define SPSVCINST_NOCLOBBER_DISPLAYNAME    0x00000008
629 #define SPSVCINST_NOCLOBBER_STARTTYPE      0x00000010
630 #define SPSVCINST_NOCLOBBER_ERRORCONTROL   0x00000020
631 #define SPSVCINST_NOCLOBBER_LOADORDERGROUP 0x00000040
632 #define SPSVCINST_NOCLOBBER_DEPENDENCIES   0x00000080
633 #define SPSVCINST_NOCLOBBER_DESCRIPTION    0x00000100
634 #define SPSVCINST_STOPSERVICE              0x00000200
635 #define SPSVCINST_CLOBBER_SECURITY         0x00000400
636 #define SPSVCINST_STARTSERVICE             0x00000800
637 
638 #define SPWPT_SELECTDEVICE	0x00000001
639 #define SPWP_USE_DEVINFO_DATA	0x00000001
640 #define SRCINFO_PATH	1
641 #define SRCINFO_TAGFILE	2
642 #define SRCINFO_DESCRIPTION	3
643 #define SRCINFO_FLAGS	4
644 #define SRCLIST_TEMPORARY	0x00000001
645 #define SRCLIST_NOBROWSE	0x00000002
646 #define SRCLIST_SYSTEM	0x00000010
647 #define SRCLIST_USER	0x00000020
648 #define SRCLIST_SYSIFADMIN	0x00000040
649 #define SRCLIST_SUBDIRS	0x00000100
650 #define SRCLIST_APPEND	0x00000200
651 #define SRCLIST_NOSTRIPPLATFORM	0x00000400
652 #define SPREG_SUCCESS	0x00000000
653 #define SPREG_LOADLIBRARY	0x00000001
654 #define SPREG_GETPROCADDR	0x00000002
655 #define SPREG_REGSVR	0x00000003
656 #define SPREG_DLLINSTALL	0x00000004
657 #define SPREG_TIMEOUT	0x00000005
658 #define SPREG_UNKNOWN	0xFFFFFFFF
659 
660 /* Flags for StringTableAddString and StringTableLookUpString */
661 #define ST_CASE_SENSITIVE_COMPARE	0x00000001
662 
663 /* SetupUninstallOEMInf Flags values */
664 #define SUOI_FORCEDELETE 0x00000001
665 
666 #ifndef RC_INVOKED
667 typedef PVOID HINF;
668 typedef PVOID HDSKSPC;
669 typedef PVOID HDEVINFO;
670 typedef PVOID HSPFILEQ;
671 typedef PVOID HSPFILELOG;
672 typedef UINT DI_FUNCTION;
673 
674 typedef PVOID HSTRING_TABLE;
675 
676 typedef enum {
677     SetupFileLogSourceFilename,
678     SetupFileLogChecksum,
679     SetupFileLogDiskTagfile,
680     SetupFileLogDiskDescription,
681     SetupFileLogOtherInfo,
682     SetupFileLogMax
683 } SetupFileLogInfo;
684 typedef struct _INFCONTEXT {
685     PVOID Inf;
686     PVOID CurrentInf;
687     UINT Section;
688     UINT Line;
689 } INFCONTEXT, *PINFCONTEXT;
690 typedef struct _SP_INF_INFORMATION {
691     DWORD InfStyle;
692     DWORD InfCount;
693     BYTE VersionData[ANYSIZE_ARRAY];
694 } SP_INF_INFORMATION, *PSP_INF_INFORMATION;
695 typedef struct _SP_INF_SIGNER_INFO_A {
696   DWORD cbSize;
697   CHAR CatalogFile;
698   CHAR DigitalSigner;
699   CHAR DigitalSignerVersion;
700 } SP_INF_SIGNER_INFO_A, *PSP_INF_SIGNER_INFO_A;
701 typedef struct _SP_INF_SIGNER_INFO_W {
702   DWORD cbSize;
703   WCHAR CatalogFile;
704   WCHAR DigitalSigner;
705   WCHAR DigitalSignerVersion;
706 } SP_INF_SIGNER_INFO_W, *PSP_INF_SIGNER_INFO_W;
707 typedef struct _SP_ALTPLATFORM_INFO_V1 {
708     DWORD cbSize;
709     DWORD Platform;
710     DWORD MajorVersion;
711     DWORD MinorVersion;
712     WORD  ProcessorArchitecture;
713     WORD  Reserved;
714 } SP_ALTPLATFORM_INFO_V1, *PSP_ALTPLATFORM_INFO_V1;
715 typedef struct _SP_ALTPLATFORM_INFO_V2 {
716   DWORD cbSize;
717   DWORD Platform;
718   DWORD MajorVersion;
719   DWORD MinorVersion;
720   WORD  ProcessorArchitecture;
721     union
722     {
723         WORD  Reserved;
724         WORD  Flags;
725     } DUMMYUNIONNAME;
726   DWORD FirstValidatedMajorVersion;
727   DWORD FirstValidatedMinorVersion;
728 } SP_ALTPLATFORM_INFO_V2, *PSP_ALTPLATFORM_INFO_V2;
729 #if _WIN32_WINNT <= 0x0500
730 typedef SP_ALTPLATFORM_INFO_V1 SP_ALTPLATFORM_INFO;
731 typedef PSP_ALTPLATFORM_INFO_V1 PSP_ALTPLATFORM_INFO;
732 #else
733 typedef SP_ALTPLATFORM_INFO_V2 SP_ALTPLATFORM_INFO;
734 typedef PSP_ALTPLATFORM_INFO_V2 PSP_ALTPLATFORM_INFO;
735 #endif
736 typedef struct _SP_ORIGINAL_FILE_INFO_A {
737     DWORD  cbSize;
738     CHAR   OriginalInfName[MAX_PATH];
739     CHAR   OriginalCatalogName[MAX_PATH];
740 } SP_ORIGINAL_FILE_INFO_A, *PSP_ORIGINAL_FILE_INFO_A;
741 typedef struct _SP_ORIGINAL_FILE_INFO_W {
742     DWORD  cbSize;
743     WCHAR  OriginalInfName[MAX_PATH];
744     WCHAR  OriginalCatalogName[MAX_PATH];
745 } SP_ORIGINAL_FILE_INFO_W, *PSP_ORIGINAL_FILE_INFO_W;
746 typedef struct _FILEPATHS_A {
747     PCSTR  Target;
748     PCSTR  Source;
749     UINT   Win32Error;
750     DWORD  Flags;
751 } FILEPATHS_A, *PFILEPATHS_A;
752 typedef struct _FILEPATHS_W {
753     PCWSTR Target;
754     PCWSTR Source;
755     UINT   Win32Error;
756     DWORD  Flags;
757 } FILEPATHS_W, *PFILEPATHS_W;
758 typedef struct _SOURCE_MEDIA_A {
759     PCSTR Reserved;
760     PCSTR Tagfile;
761     PCSTR Description;
762     PCSTR SourcePath;
763     PCSTR SourceFile;
764     DWORD Flags;
765 } SOURCE_MEDIA_A, *PSOURCE_MEDIA_A;
766 typedef struct _SOURCE_MEDIA_W {
767     PCWSTR Reserved;
768     PCWSTR Tagfile;
769     PCWSTR Description;
770     PCWSTR SourcePath;
771     PCWSTR SourceFile;
772     DWORD  Flags;
773 } SOURCE_MEDIA_W, *PSOURCE_MEDIA_W;
774 typedef struct _CABINET_INFO_A {
775     PCSTR CabinetPath;
776     PCSTR CabinetFile;
777     PCSTR DiskName;
778     USHORT SetId;
779     USHORT CabinetNumber;
780 } CABINET_INFO_A, *PCABINET_INFO_A;
781 typedef struct _CABINET_INFO_W {
782     PCWSTR CabinetPath;
783     PCWSTR CabinetFile;
784     PCWSTR DiskName;
785     USHORT SetId;
786     USHORT CabinetNumber;
787 } CABINET_INFO_W, *PCABINET_INFO_W;
788 typedef struct _FILE_IN_CABINET_INFO_A {
789     PCSTR NameInCabinet;
790     DWORD FileSize;
791     DWORD Win32Error;
792     WORD  DosDate;
793     WORD  DosTime;
794     WORD  DosAttribs;
795     CHAR  FullTargetName[MAX_PATH];
796 } FILE_IN_CABINET_INFO_A, *PFILE_IN_CABINET_INFO_A;
797 typedef struct _FILE_IN_CABINET_INFO_W {
798     PCWSTR NameInCabinet;
799     DWORD  FileSize;
800     DWORD  Win32Error;
801     WORD   DosDate;
802     WORD   DosTime;
803     WORD   DosAttribs;
804     WCHAR  FullTargetName[MAX_PATH];
805 } FILE_IN_CABINET_INFO_W, *PFILE_IN_CABINET_INFO_W;
806 typedef struct _SP_FILE_COPY_PARAMS_A {
807     DWORD    cbSize;
808     HSPFILEQ QueueHandle;
809     PCSTR    SourceRootPath;
810     PCSTR    SourcePath;
811     PCSTR    SourceFilename;
812     PCSTR    SourceDescription;
813     PCSTR    SourceTagfile;
814     PCSTR    TargetDirectory;
815     PCSTR    TargetFilename;
816     DWORD    CopyStyle;
817     HINF     LayoutInf;
818     PCSTR    SecurityDescriptor;
819 } SP_FILE_COPY_PARAMS_A, *PSP_FILE_COPY_PARAMS_A;
820 typedef struct _SP_FILE_COPY_PARAMS_W {
821     DWORD    cbSize;
822     HSPFILEQ QueueHandle;
823     PCWSTR   SourceRootPath;
824     PCWSTR   SourcePath;
825     PCWSTR   SourceFilename;
826     PCWSTR   SourceDescription;
827     PCWSTR   SourceTagfile;
828     PCWSTR   TargetDirectory;
829     PCWSTR   TargetFilename;
830     DWORD    CopyStyle;
831     HINF     LayoutInf;
832     PCWSTR   SecurityDescriptor;
833 } SP_FILE_COPY_PARAMS_W, *PSP_FILE_COPY_PARAMS_W;
834 typedef struct _SP_DEVINFO_DATA {
835     DWORD cbSize;
836     GUID  ClassGuid;
837     DWORD DevInst;
838     ULONG_PTR Reserved;
839 } SP_DEVINFO_DATA, *PSP_DEVINFO_DATA;
840 typedef struct _SP_DEVICE_INTERFACE_DATA {
841     DWORD cbSize;
842     GUID  InterfaceClassGuid;
843     DWORD Flags;
844     ULONG_PTR Reserved;
845 } SP_DEVICE_INTERFACE_DATA, *PSP_DEVICE_INTERFACE_DATA;
846 /* For backward compatability */
847 typedef SP_DEVICE_INTERFACE_DATA  SP_INTERFACE_DEVICE_DATA, *PSP_INTERFACE_DEVICE_DATA;
848 
849 typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_A {
850     DWORD  cbSize;
851     CHAR   DevicePath[ANYSIZE_ARRAY];
852 } SP_DEVICE_INTERFACE_DETAIL_DATA_A, *PSP_DEVICE_INTERFACE_DETAIL_DATA_A;
853 typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_W {
854     DWORD  cbSize;
855     WCHAR  DevicePath[ANYSIZE_ARRAY];
856 } SP_DEVICE_INTERFACE_DETAIL_DATA_W, *PSP_DEVICE_INTERFACE_DETAIL_DATA_W;
857 /* For backward compatability */
858 typedef SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA_A,
859     *PSP_INTERFACE_DEVICE_DETAIL_DATA_A;
860 typedef SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA_W,
861     *PSP_INTERFACE_DEVICE_DETAIL_DATA_W;
862 
863 typedef struct _SP_DEVINFO_LIST_DETAIL_DATA_A {
864     DWORD  cbSize;
865     GUID   ClassGuid;
866     HANDLE RemoteMachineHandle;
867     CHAR   RemoteMachineName[SP_MAX_MACHINENAME_LENGTH];
868 } SP_DEVINFO_LIST_DETAIL_DATA_A, *PSP_DEVINFO_LIST_DETAIL_DATA_A;
869 typedef struct _SP_DEVINFO_LIST_DETAIL_DATA_W {
870     DWORD  cbSize;
871     GUID   ClassGuid;
872     HANDLE RemoteMachineHandle;
873     WCHAR  RemoteMachineName[SP_MAX_MACHINENAME_LENGTH];
874 } SP_DEVINFO_LIST_DETAIL_DATA_W, *PSP_DEVINFO_LIST_DETAIL_DATA_W;
875 
876 typedef UINT (CALLBACK* PSP_FILE_CALLBACK_A)(PVOID,UINT,UINT_PTR,UINT_PTR);
877 typedef UINT (CALLBACK* PSP_FILE_CALLBACK_W)(PVOID,UINT,UINT_PTR,UINT_PTR);
878 typedef struct _SP_DEVINSTALL_PARAMS_A {
879     DWORD             cbSize;
880     DWORD             Flags;
881     DWORD             FlagsEx;
882     HWND              hwndParent;
883     PSP_FILE_CALLBACK_A InstallMsgHandler;
884     PVOID             InstallMsgHandlerContext;
885     HSPFILEQ          FileQueue;
886     ULONG_PTR         ClassInstallReserved;
887     DWORD             Reserved;
888     CHAR              DriverPath[MAX_PATH];
889 } SP_DEVINSTALL_PARAMS_A, *PSP_DEVINSTALL_PARAMS_A;
890 typedef struct _SP_DEVINSTALL_PARAMS_W {
891     DWORD             cbSize;
892     DWORD             Flags;
893     DWORD             FlagsEx;
894     HWND              hwndParent;
895     PSP_FILE_CALLBACK_W InstallMsgHandler;
896     PVOID             InstallMsgHandlerContext;
897     HSPFILEQ          FileQueue;
898     ULONG_PTR         ClassInstallReserved;
899     DWORD             Reserved;
900     WCHAR             DriverPath[MAX_PATH];
901 } SP_DEVINSTALL_PARAMS_W, *PSP_DEVINSTALL_PARAMS_W;
902 typedef struct _SP_CLASSINSTALL_HEADER {
903     DWORD       cbSize;
904     DI_FUNCTION InstallFunction;
905 } SP_CLASSINSTALL_HEADER, *PSP_CLASSINSTALL_HEADER;
906 typedef struct _SP_ENABLECLASS_PARAMS {
907     SP_CLASSINSTALL_HEADER ClassInstallHeader;
908     GUID                   ClassGuid;
909     DWORD                  EnableMessage;
910 } SP_ENABLECLASS_PARAMS, *PSP_ENABLECLASS_PARAMS;
911 typedef struct _SP_MOVEDEV_PARAMS {
912     SP_CLASSINSTALL_HEADER ClassInstallHeader;
913     SP_DEVINFO_DATA        SourceDeviceInfoData;
914 } SP_MOVEDEV_PARAMS, *PSP_MOVEDEV_PARAMS;
915 typedef struct _SP_PROPCHANGE_PARAMS {
916     SP_CLASSINSTALL_HEADER ClassInstallHeader;
917     DWORD                  StateChange;
918     DWORD                  Scope;
919     DWORD                  HwProfile;
920 } SP_PROPCHANGE_PARAMS, *PSP_PROPCHANGE_PARAMS;
921 typedef struct _SP_REMOVEDEVICE_PARAMS {
922     SP_CLASSINSTALL_HEADER ClassInstallHeader;
923     DWORD Scope;
924     DWORD HwProfile;
925 } SP_REMOVEDEVICE_PARAMS, *PSP_REMOVEDEVICE_PARAMS;
926 typedef struct _SP_UNREMOVEDEVICE_PARAMS {
927     SP_CLASSINSTALL_HEADER ClassInstallHeader;
928     DWORD Scope;
929     DWORD HwProfile;
930 } SP_UNREMOVEDEVICE_PARAMS, *PSP_UNREMOVEDEVICE_PARAMS;
931 typedef struct _SP_SELECTDEVICE_PARAMS_A {
932     SP_CLASSINSTALL_HEADER ClassInstallHeader;
933     CHAR                   Title[MAX_TITLE_LEN];
934     CHAR                   Instructions[MAX_INSTRUCTION_LEN];
935     CHAR                   ListLabel[MAX_LABEL_LEN];
936     CHAR                   SubTitle[MAX_SUBTITLE_LEN];
937     BYTE                   Reserved[2];
938 } SP_SELECTDEVICE_PARAMS_A, *PSP_SELECTDEVICE_PARAMS_A;
939 typedef struct _SP_SELECTDEVICE_PARAMS_W {
940     SP_CLASSINSTALL_HEADER ClassInstallHeader;
941     WCHAR                  Title[MAX_TITLE_LEN];
942     WCHAR                  Instructions[MAX_INSTRUCTION_LEN];
943     WCHAR                  ListLabel[MAX_LABEL_LEN];
944     WCHAR                  SubTitle[MAX_SUBTITLE_LEN];
945 } SP_SELECTDEVICE_PARAMS_W, *PSP_SELECTDEVICE_PARAMS_W;
946 typedef struct _SP_REGISTER_CONTROL_STATUSA {
947     DWORD                  cbSize;
948     PCSTR                  FileName;
949     DWORD                  Win32Error;
950     DWORD                  FailureCode;
951 } SP_REGISTER_CONTROL_STATUSA, *PSP_REGISTER_CONTROL_STATUSA;
952 typedef struct _SP_REGISTER_CONTROL_STATUSW {
953     DWORD                  cbSize;
954     PCWSTR                 FileName;
955     DWORD                  Win32Error;
956     DWORD                  FailureCode;
957 } SP_REGISTER_CONTROL_STATUSW, *PSP_REGISTER_CONTROL_STATUSW;
958 
959 typedef BOOL (CALLBACK* PDETECT_PROGRESS_NOTIFY)(PVOID,DWORD);
960 typedef struct _SP_DETECTDEVICE_PARAMS {
961     SP_CLASSINSTALL_HEADER  ClassInstallHeader;
962     PDETECT_PROGRESS_NOTIFY DetectProgressNotify;
963     PVOID                   ProgressNotifyParam;
964 } SP_DETECTDEVICE_PARAMS, *PSP_DETECTDEVICE_PARAMS;
965 typedef struct _SP_INSTALLWIZARD_DATA {
966     SP_CLASSINSTALL_HEADER ClassInstallHeader;
967     DWORD                  Flags;
968     HPROPSHEETPAGE         DynamicPages[MAX_INSTALLWIZARD_DYNAPAGES];
969     DWORD                  NumDynamicPages;
970     DWORD                  DynamicPageFlags;
971     DWORD                  PrivateFlags;
972     LPARAM                 PrivateData;
973     HWND                   hwndWizardDlg;
974 } SP_INSTALLWIZARD_DATA, *PSP_INSTALLWIZARD_DATA;
975 typedef struct _SP_NEWDEVICEWIZARD_DATA {
976     SP_CLASSINSTALL_HEADER ClassInstallHeader;
977     DWORD                  Flags;
978     HPROPSHEETPAGE         DynamicPages[MAX_INSTALLWIZARD_DYNAPAGES];
979     DWORD                  NumDynamicPages;
980     HWND                   hwndWizardDlg;
981 } SP_NEWDEVICEWIZARD_DATA, *PSP_NEWDEVICEWIZARD_DATA;
982 typedef SP_NEWDEVICEWIZARD_DATA SP_ADDPROPERTYPAGE_DATA,
983     *PSP_ADDPROPERTYPAGE_DATA;
984 typedef struct _SP_TROUBLESHOOTER_PARAMS_A {
985     SP_CLASSINSTALL_HEADER ClassInstallHeader;
986     CHAR                   ChmFile[MAX_PATH];
987     CHAR                   HtmlTroubleShooter[MAX_PATH];
988 } SP_TROUBLESHOOTER_PARAMS_A, *PSP_TROUBLESHOOTER_PARAMS_A;
989 typedef struct _SP_TROUBLESHOOTER_PARAMS_W {
990     SP_CLASSINSTALL_HEADER ClassInstallHeader;
991     WCHAR                  ChmFile[MAX_PATH];
992     WCHAR                  HtmlTroubleShooter[MAX_PATH];
993 } SP_TROUBLESHOOTER_PARAMS_W, *PSP_TROUBLESHOOTER_PARAMS_W;
994 typedef struct _SP_POWERMESSAGEWAKE_PARAMS_A {
995     SP_CLASSINSTALL_HEADER ClassInstallHeader;
996     CHAR                   PowerMessageWake[LINE_LEN*2];
997 } SP_POWERMESSAGEWAKE_PARAMS_A, *PSP_POWERMESSAGEWAKE_PARAMS_A;
998 typedef struct _SP_POWERMESSAGEWAKE_PARAMS_W {
999     SP_CLASSINSTALL_HEADER ClassInstallHeader;
1000     WCHAR                  PowerMessageWake[LINE_LEN*2];
1001 } SP_POWERMESSAGEWAKE_PARAMS_W, *PSP_POWERMESSAGEWAKE_PARAMS_W;
1002 typedef struct _SP_DRVINFO_DATA_V2_A {
1003     DWORD     cbSize;
1004     DWORD     DriverType;
1005     ULONG_PTR Reserved;
1006     CHAR      Description[LINE_LEN];
1007     CHAR      MfgName[LINE_LEN];
1008     CHAR      ProviderName[LINE_LEN];
1009     FILETIME  DriverDate;
1010     DWORDLONG DriverVersion;
1011 } SP_DRVINFO_DATA_V2_A, *PSP_DRVINFO_DATA_V2_A;
1012 typedef struct _SP_DRVINFO_DATA_V2_W {
1013     DWORD     cbSize;
1014     DWORD     DriverType;
1015     ULONG_PTR Reserved;
1016     WCHAR     Description[LINE_LEN];
1017     WCHAR     MfgName[LINE_LEN];
1018     WCHAR     ProviderName[LINE_LEN];
1019     FILETIME  DriverDate;
1020     DWORDLONG DriverVersion;
1021 } SP_DRVINFO_DATA_V2_W, *PSP_DRVINFO_DATA_V2_W;
1022 typedef struct _SP_DRVINFO_DATA_V1_A {
1023     DWORD     cbSize;
1024     DWORD     DriverType;
1025     ULONG_PTR Reserved;
1026     CHAR      Description[LINE_LEN];
1027     CHAR      MfgName[LINE_LEN];
1028     CHAR      ProviderName[LINE_LEN];
1029 } SP_DRVINFO_DATA_V1_A, *PSP_DRVINFO_DATA_V1_A;
1030 typedef struct _SP_DRVINFO_DATA_V1_W {
1031     DWORD     cbSize;
1032     DWORD     DriverType;
1033     ULONG_PTR Reserved;
1034     WCHAR     Description[LINE_LEN];
1035     WCHAR     MfgName[LINE_LEN];
1036     WCHAR     ProviderName[LINE_LEN];
1037 } SP_DRVINFO_DATA_V1_W, *PSP_DRVINFO_DATA_V1_W;
1038 
1039 #ifdef UNICODE
1040 typedef SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_V1, *PSP_DRVINFO_DATA_V1;
1041 typedef SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_V2, *PSP_DRVINFO_DATA_V2;
1042 #else
1043 typedef SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_V1, *PSP_DRVINFO_DATA_V1;
1044 typedef SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_V2, *PSP_DRVINFO_DATA_V2;
1045 #endif
1046 
1047 #if USE_SP_DRVINFO_DATA_V1
1048 typedef SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_A, *PSP_DRVINFO_DATA_A;
1049 typedef SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_W, *PSP_DRVINFO_DATA_W;
1050 typedef SP_DRVINFO_DATA_V1 SP_DRVINFO_DATA, *PSP_DRVINFO_DATA;
1051 #else
1052 typedef SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_A, *PSP_DRVINFO_DATA_A;
1053 typedef SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_W, *PSP_DRVINFO_DATA_W;
1054 typedef SP_DRVINFO_DATA_V2 SP_DRVINFO_DATA, *PSP_DRVINFO_DATA;
1055 #endif
1056 
1057 typedef DWORD (CALLBACK* PSP_DETSIG_CMPPROC)(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINFO_DATA,PVOID);
1058 
1059 typedef struct _SP_DRVINFO_DETAIL_DATA_A {
1060     DWORD    cbSize;
1061     FILETIME InfDate;
1062     DWORD    CompatIDsOffset;
1063     DWORD    CompatIDsLength;
1064     ULONG_PTR Reserved;
1065     CHAR     SectionName[LINE_LEN];
1066     CHAR     InfFileName[MAX_PATH];
1067     CHAR     DrvDescription[LINE_LEN];
1068     CHAR     HardwareID[ANYSIZE_ARRAY];
1069 } SP_DRVINFO_DETAIL_DATA_A, *PSP_DRVINFO_DETAIL_DATA_A;
1070 typedef struct _SP_DRVINFO_DETAIL_DATA_W {
1071     DWORD    cbSize;
1072     FILETIME InfDate;
1073     DWORD    CompatIDsOffset;
1074     DWORD    CompatIDsLength;
1075     ULONG_PTR Reserved;
1076     WCHAR    SectionName[LINE_LEN];
1077     WCHAR    InfFileName[MAX_PATH];
1078     WCHAR    DrvDescription[LINE_LEN];
1079     WCHAR    HardwareID[ANYSIZE_ARRAY];
1080 } SP_DRVINFO_DETAIL_DATA_W, *PSP_DRVINFO_DETAIL_DATA_W;
1081 typedef struct _SP_DRVINSTALL_PARAMS {
1082     DWORD cbSize;
1083     DWORD Rank;
1084     DWORD Flags;
1085     DWORD_PTR PrivateData;
1086     DWORD Reserved;
1087 } SP_DRVINSTALL_PARAMS, *PSP_DRVINSTALL_PARAMS;
1088 
1089 
1090 typedef struct _COINSTALLER_CONTEXT_DATA {
1091     BOOL  PostProcessing;
1092     DWORD InstallResult;
1093     PVOID PrivateData;
1094 } COINSTALLER_CONTEXT_DATA, *PCOINSTALLER_CONTEXT_DATA;
1095 typedef struct _SP_CLASSIMAGELIST_DATA {
1096     DWORD      cbSize;
1097     HIMAGELIST ImageList;
1098     ULONG_PTR  Reserved;
1099 } SP_CLASSIMAGELIST_DATA, *PSP_CLASSIMAGELIST_DATA;
1100 typedef struct _SP_PROPSHEETPAGE_REQUEST {
1101     DWORD            cbSize;
1102     DWORD            PageRequested;
1103     HDEVINFO         DeviceInfoSet;
1104     PSP_DEVINFO_DATA DeviceInfoData;
1105 } SP_PROPSHEETPAGE_REQUEST, *PSP_PROPSHEETPAGE_REQUEST;
1106 typedef struct _SP_BACKUP_QUEUE_PARAMS_A {
1107     DWORD    cbSize;
1108     CHAR     FullInfPath[MAX_PATH];
1109     INT      FilenameOffset;
1110 } SP_BACKUP_QUEUE_PARAMS_A, *PSP_BACKUP_QUEUE_PARAMS_A;
1111 typedef struct _SP_BACKUP_QUEUE_PARAMS_W {
1112     DWORD    cbSize;
1113     WCHAR    FullInfPath[MAX_PATH];
1114     INT      FilenameOffset;
1115 } SP_BACKUP_QUEUE_PARAMS_W, *PSP_BACKUP_QUEUE_PARAMS_W;
1116 
1117 
1118 #ifdef UNICODE
1119 typedef SP_ORIGINAL_FILE_INFO_W SP_ORIGINAL_FILE_INFO, *PSP_ORIGINAL_FILE_INFO;
1120 typedef FILEPATHS_W FILEPATHS, *PFILEPATHS;
1121 typedef SOURCE_MEDIA_W SOURCE_MEDIA, *PSOURCE_MEDIA;
1122 typedef CABINET_INFO_W CABINET_INFO, *PCABINET_INFO;
1123 typedef FILE_IN_CABINET_INFO_W FILE_IN_CABINET_INFO, *PFILE_IN_CABINET_INFO;
1124 typedef SP_FILE_COPY_PARAMS_W SP_FILE_COPY_PARAMS, PSP_FILE_COPY_PARAMS;
1125 typedef SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_DEVICE_INTERFACE_DETAIL_DATA,
1126     *PSP_DEVICE_INTERFACE_DETAIL_DATA;
1127 typedef SP_INTERFACE_DEVICE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA,
1128     *PSP_INTERFACE_DEVICE_DETAIL_DATA; /* deprecated */
1129 typedef SP_DEVINFO_LIST_DETAIL_DATA_W SP_DEVINFO_LIST_DETAIL_DATA,
1130     *PSP_DEVINFO_LIST_DETAIL_DATA;
1131 typedef SP_DEVINSTALL_PARAMS_W SP_DEVINSTALL_PARAMS, *PSP_DEVINSTALL_PARAMS;
1132 typedef SP_SELECTDEVICE_PARAMS_W SP_SELECTDEVICE_PARAMS, *PSP_SELECTDEVICE_PARAMS;
1133 typedef SP_TROUBLESHOOTER_PARAMS_W SP_TROUBLESHOOTER_PARAMS,
1134     *PSP_TROUBLESHOOTER_PARAMS;
1135 typedef SP_POWERMESSAGEWAKE_PARAMS_W SP_POWERMESSAGEWAKE_PARAMS,
1136     *PSP_POWERMESSAGEWAKE_PARAMS;
1137 typedef SP_DRVINFO_DETAIL_DATA_W SP_DRVINFO_DETAIL_DATA,
1138      *PSP_DRVINFO_DETAIL_DATA;
1139 typedef SP_BACKUP_QUEUE_PARAMS_W SP_BACKUP_QUEUE_PARAMS,
1140     *PSP_BACKUP_QUEUE_PARAMS;
1141 typedef SP_REGISTER_CONTROL_STATUSW SP_REGISTER_CONTROL_STATUS, *PSP_REGISTER_CONTROL_STATUS;
1142 #else
1143 typedef SP_ORIGINAL_FILE_INFO_A SP_ORIGINAL_FILE_INFO, *PSP_ORIGINAL_FILE_INFO;
1144 typedef FILEPATHS_A FILEPATHS, *PFILEPATHS;
1145 typedef SOURCE_MEDIA_A SOURCE_MEDIA, *PSOURCE_MEDIA;
1146 typedef CABINET_INFO_A CABINET_INFO, *PCABINET_INFO;
1147 typedef FILE_IN_CABINET_INFO_A FILE_IN_CABINET_INFO, *PFILE_IN_CABINET_INFO;
1148 typedef SP_FILE_COPY_PARAMS_A SP_FILE_COPY_PARAMS, *PSP_FILE_COPY_PARAMS;
1149 typedef SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_DEVICE_INTERFACE_DETAIL_DATA,
1150     *PSP_DEVICE_INTERFACE_DETAIL_DATA;
1151 typedef SP_INTERFACE_DEVICE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA,
1152     *PSP_INTERFACE_DEVICE_DETAIL_DATA; /* deprecated */
1153 typedef SP_DEVINFO_LIST_DETAIL_DATA_A SP_DEVINFO_LIST_DETAIL_DATA,
1154     *PSP_DEVINFO_LIST_DETAIL_DATA;
1155 typedef SP_DEVINSTALL_PARAMS_A SP_DEVINSTALL_PARAMS, *PSP_DEVINSTALL_PARAMS;
1156 typedef SP_SELECTDEVICE_PARAMS_A SP_SELECTDEVICE_PARAMS,
1157     *PSP_SELECTDEVICE_PARAMS;
1158 typedef SP_TROUBLESHOOTER_PARAMS_A SP_TROUBLESHOOTER_PARAMS,
1159     *PSP_TROUBLESHOOTER_PARAMS;
1160 typedef SP_POWERMESSAGEWAKE_PARAMS_A SP_POWERMESSAGEWAKE_PARAMS,
1161     *PSP_POWERMESSAGEWAKE_PARAMS;
1162 typedef SP_DRVINFO_DETAIL_DATA_A SP_DRVINFO_DETAIL_DATA,
1163     *PSP_DRVINFO_DETAIL_DATA;
1164 typedef SP_BACKUP_QUEUE_PARAMS_A SP_BACKUP_QUEUE_PARAMS,
1165     *PSP_BACKUP_QUEUE_PARAMS;
1166 typedef SP_REGISTER_CONTROL_STATUSA SP_REGISTER_CONTROL_STATUS, *PSP_REGISTER_CONTROL_STATUS;
1167 #endif /* UNICODE */
1168 
1169 
1170 WINSETUPAPI LONG WINAPI AddTagToGroupOrderList(PCWSTR, DWORD, DWORD);
1171 WINSETUPAPI VOID WINAPI AssertFail(LPSTR, UINT, LPSTR);
1172 WINSETUPAPI DWORD WINAPI CaptureStringArg(PCWSTR, PWSTR*);
1173 WINSETUPAPI BOOL WINAPI DelayedMove(PCWSTR, PCWSTR);
1174 WINSETUPAPI BOOL WINAPI DoesUserHavePrivilege(PCWSTR);
1175 WINSETUPAPI BOOL WINAPI FileExists(PCWSTR, PWIN32_FIND_DATAW);
1176 WINSETUPAPI DWORD WINAPI GetSetFileTimestamp(PCWSTR, PFILETIME, PFILETIME, PFILETIME, BOOLEAN);
1177 WINSETUPAPI VOID WINAPI InstallHinfSectionA(_In_ HWND, _In_ HINSTANCE, _In_ PCSTR, _In_ INT);
1178 WINSETUPAPI VOID WINAPI InstallHinfSectionW(_In_ HWND, _In_ HINSTANCE, _In_ PCWSTR, _In_ INT);
1179 WINSETUPAPI BOOL WINAPI IsUserAdmin(VOID);
1180 WINSETUPAPI VOID WINAPI MyFree(PVOID);
1181 WINSETUPAPI PVOID WINAPI MyMalloc(DWORD);
1182 WINSETUPAPI PVOID WINAPI MyRealloc(PVOID, DWORD);
1183 WINSETUPAPI LONG WINAPI QueryRegistryValue(HKEY, PCWSTR, PBYTE*, PDWORD, PDWORD);
1184 WINSETUPAPI DWORD WINAPI RetreiveFileSecurity(PCWSTR, PSECURITY_DESCRIPTOR*);
1185 
1186 WINSETUPAPI BOOL WINAPI SetupAddInstallSectionToDiskSpaceListA(_In_ HDSKSPC, _In_ HINF, _In_opt_ HINF, _In_ PCSTR, _Reserved_ PVOID, _Reserved_ UINT);
1187 WINSETUPAPI BOOL WINAPI SetupAddInstallSectionToDiskSpaceListW(_In_ HDSKSPC, _In_ HINF, _In_opt_ HINF, _In_ PCWSTR, _Reserved_ PVOID, _Reserved_ UINT);
1188 WINSETUPAPI BOOL WINAPI SetupAddSectionToDiskSpaceListA(_In_ HDSKSPC, _In_ HINF, _In_opt_ HINF, _In_ PCSTR, _In_ UINT, _Reserved_ PVOID, _Reserved_ UINT);
1189 WINSETUPAPI BOOL WINAPI SetupAddSectionToDiskSpaceListW(_In_ HDSKSPC, _In_ HINF, _In_opt_ HINF, _In_ PCWSTR, _In_ UINT, _Reserved_ PVOID, _Reserved_ UINT);
1190 WINSETUPAPI BOOL WINAPI SetupAddToDiskSpaceListA(_In_ HDSKSPC, _In_ PCSTR, _In_ LONGLONG, _In_ UINT, _Reserved_ PVOID, _Reserved_ UINT);
1191 WINSETUPAPI BOOL WINAPI SetupAddToDiskSpaceListW(_In_ HDSKSPC, _In_ PCWSTR, _In_ LONGLONG, _In_ UINT, _Reserved_ PVOID, _Reserved_ UINT);
1192 WINSETUPAPI BOOL WINAPI SetupAddToSourceListA(_In_ DWORD, _In_ PCSTR);
1193 WINSETUPAPI BOOL WINAPI SetupAddToSourceListW(_In_ DWORD, _In_ PCWSTR);
1194 WINSETUPAPI BOOL WINAPI SetupAdjustDiskSpaceListA(_In_ HDSKSPC, _In_ LPCSTR, _In_ LONGLONG, _Reserved_ PVOID, _Reserved_ UINT);
1195 WINSETUPAPI BOOL WINAPI SetupAdjustDiskSpaceListW(_In_ HDSKSPC, _In_ LPCWSTR, _In_ LONGLONG, _Reserved_ PVOID, _Reserved_ UINT);
1196 WINSETUPAPI UINT WINAPI SetupBackupErrorA(_In_ HWND, _In_opt_ PCSTR, _In_ PCSTR, _In_opt_ PCSTR, _In_ UINT, _In_ DWORD);
1197 WINSETUPAPI UINT WINAPI SetupBackupErrorW(_In_ HWND, _In_opt_ PCWSTR, _In_ PCWSTR, _In_opt_ PCWSTR, _In_ UINT, _In_ DWORD);
1198 WINSETUPAPI BOOL WINAPI SetupCancelTemporary(VOID);
1199 WINSETUPAPI BOOL WINAPI SetupCloseFileQueue(_In_ HSPFILEQ);
1200 WINSETUPAPI VOID WINAPI SetupCloseInfFile(_In_ HINF);
1201 WINSETUPAPI VOID WINAPI SetupCloseLog(VOID);
1202 WINSETUPAPI BOOL WINAPI SetupCommitFileQueueA(_In_opt_ HWND, _In_ HSPFILEQ, _In_ PSP_FILE_CALLBACK_A, _In_ PVOID);
1203 WINSETUPAPI BOOL WINAPI SetupCommitFileQueueW(_In_opt_ HWND, _In_ HSPFILEQ, _In_ PSP_FILE_CALLBACK_W, _In_ PVOID);
1204 
1205 WINSETUPAPI
1206 UINT
1207 WINAPI
1208 SetupCopyErrorA(
1209   _In_ HWND hwndParent,
1210   _In_opt_ PCSTR DialogTitle,
1211   _In_opt_ PCSTR DiskName,
1212   _In_ PCSTR PathToSource,
1213   _In_ PCSTR SourceFile,
1214   _In_opt_ PCSTR TargetPathFile,
1215   _In_ UINT Win32ErrorCode,
1216   _In_ DWORD Style,
1217   _Out_writes_opt_(PathBufferSize) PSTR PathBuffer,
1218   _In_ DWORD PathBufferSize,
1219   _Out_opt_ PDWORD PathRequiredSize);
1220 
1221 WINSETUPAPI
1222 UINT
1223 WINAPI
1224 SetupCopyErrorW(
1225   _In_ HWND hwndParent,
1226   _In_opt_ PCWSTR DialogTitle,
1227   _In_opt_ PCWSTR DiskName,
1228   _In_ PCWSTR PathToSource,
1229   _In_ PCWSTR SourceFile,
1230   _In_opt_ PCWSTR TargetPathFile,
1231   _In_ UINT Win32ErrorCode,
1232   _In_ DWORD Style,
1233   _Out_writes_opt_(PathBufferSize) PWSTR PathBuffer,
1234   _In_ DWORD PathBufferSize,
1235   _Out_opt_ PDWORD PathRequiredSize);
1236 
1237 WINSETUPAPI
1238 BOOL
1239 WINAPI
1240 SetupCopyOEMInfA(
1241   _In_ PCSTR SourceInfFileName,
1242   _In_opt_ PCSTR OEMSourceMediaLocation,
1243   _In_ DWORD OEMSourceMediaType,
1244   _In_ DWORD CopyStyle,
1245   _Out_writes_opt_(DestinationInfFileNameSize) PSTR DestinationInfFileName,
1246   _In_ DWORD DestinationInfFileNameSize,
1247   _Out_opt_ PDWORD RequiredSize,
1248   _Out_opt_ PSTR *DestinationInfFileNameComponent);
1249 
1250 WINSETUPAPI
1251 BOOL
1252 WINAPI
1253 SetupCopyOEMInfW(
1254   _In_ PCWSTR SourceInfFileName,
1255   _In_opt_ PCWSTR OEMSourceMediaLocation,
1256   _In_ DWORD OEMSourceMediaType,
1257   _In_ DWORD CopyStyle,
1258   _Out_writes_opt_(DestinationInfFileNameSize) PWSTR DestinationInfFileName,
1259   _In_ DWORD DestinationInfFileNameSize,
1260   _Out_opt_ PDWORD RequiredSize,
1261   _Out_opt_ PWSTR  *DestinationInfFileNameComponent);
1262 
1263 WINSETUPAPI HDSKSPC WINAPI SetupCreateDiskSpaceListA(_Reserved_ PVOID, _Reserved_ DWORD, _In_ UINT);
1264 WINSETUPAPI HDSKSPC WINAPI SetupCreateDiskSpaceListW(_Reserved_ PVOID, _Reserved_ DWORD, _In_ UINT);
1265 WINSETUPAPI DWORD WINAPI SetupDecompressOrCopyFileA(_In_ PCSTR, _In_ PCSTR, _In_opt_ PUINT);
1266 WINSETUPAPI DWORD WINAPI SetupDecompressOrCopyFileW(_In_ PCWSTR, _In_ PCWSTR, _In_opt_ PUINT);
1267 WINSETUPAPI UINT WINAPI SetupDefaultQueueCallbackA(_In_ PVOID, _In_ UINT, _In_ UINT_PTR, _In_ UINT_PTR);
1268 WINSETUPAPI UINT WINAPI SetupDefaultQueueCallbackW(_In_ PVOID, _In_ UINT, _In_ UINT_PTR, _In_ UINT_PTR);
1269 WINSETUPAPI UINT WINAPI SetupDeleteErrorA(_In_ HWND, _In_opt_ PCSTR, _In_ PCSTR, _In_ UINT, _In_ DWORD);
1270 WINSETUPAPI UINT WINAPI SetupDeleteErrorW(_In_ HWND, _In_opt_ PCWSTR, _In_ PCWSTR, _In_ UINT, _In_ DWORD);
1271 WINSETUPAPI BOOL WINAPI SetupDestroyDiskSpaceList(_Inout_ HDSKSPC);
1272 WINSETUPAPI BOOL WINAPI SetupDiAskForOEMDisk(_In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA);
1273 
1274 _Success_(return != FALSE)
1275 WINSETUPAPI
1276 BOOL
1277 WINAPI
1278 SetupDiBuildClassInfoList(
1279   _In_ DWORD Flags,
1280   _Out_writes_to_opt_(ClassGuidListSize, *RequiredSize) LPGUID ClassGuidList,
1281   _In_ DWORD ClassGuidListSize,
1282   _Out_ PDWORD RequiredSize);
1283 
1284 _Success_(return != FALSE)
1285 WINSETUPAPI
1286 BOOL
1287 WINAPI
1288 SetupDiBuildClassInfoListExA(
1289   _In_ DWORD Flags,
1290   _Out_writes_to_opt_(ClassGuidListSize, *RequiredSize) LPGUID ClassGuidList,
1291   _In_ DWORD ClassGuidListSize,
1292   _Out_ PDWORD RequiredSize,
1293   _In_opt_ PCSTR MachineName,
1294   _Reserved_ PVOID Reserved);
1295 
1296 _Success_(return != FALSE)
1297 WINSETUPAPI
1298 BOOL
1299 WINAPI
1300 SetupDiBuildClassInfoListExW(
1301   _In_ DWORD Flags,
1302   _Out_writes_to_opt_(ClassGuidListSize, *RequiredSize) LPGUID ClassGuidList,
1303   _In_ DWORD ClassGuidListSize,
1304   _Out_ PDWORD RequiredSize,
1305   _In_opt_ PCWSTR MachineName,
1306   _Reserved_ PVOID Reserved);
1307 
1308 WINSETUPAPI BOOL WINAPI SetupDiBuildDriverInfoList(_In_ HDEVINFO, _Inout_opt_ PSP_DEVINFO_DATA, _In_ DWORD);
1309 WINSETUPAPI BOOL WINAPI SetupDiCallClassInstaller(_In_ DI_FUNCTION, _In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA);
1310 WINSETUPAPI BOOL WINAPI SetupDiCancelDriverInfoSearch(_In_ HDEVINFO);
1311 WINSETUPAPI BOOL WINAPI SetupDiChangeState(_In_ HDEVINFO, _Inout_ PSP_DEVINFO_DATA);
1312 
1313 _Success_(return != FALSE)
1314 WINSETUPAPI
1315 BOOL
1316 WINAPI
1317 SetupDiClassGuidsFromNameA(
1318   _In_ PCSTR ClassName,
1319   _Out_writes_to_(ClassGuidListSize, *RequiredSize) LPGUID ClassGuidList,
1320   _In_ DWORD ClassGuidListSize,
1321   _Out_ PDWORD RequiredSize);
1322 
1323 _Success_(return != FALSE)
1324 WINSETUPAPI
1325 BOOL
1326 WINAPI
1327 SetupDiClassGuidsFromNameW(
1328   _In_ PCWSTR ClassName,
1329   _Out_writes_to_(ClassGuidListSize, *RequiredSize) LPGUID ClassGuidList,
1330   _In_ DWORD ClassGuidListSize,
1331   _Out_ PDWORD RequiredSize);
1332 
1333 _Success_(return != FALSE)
1334 WINSETUPAPI
1335 BOOL
1336 WINAPI
1337 SetupDiClassGuidsFromNameExA(
1338   _In_ PCSTR ClassName,
1339   _Out_writes_to_(ClassGuidListSize, *RequiredSize) LPGUID ClassGuidList,
1340   _In_ DWORD ClassGuidListSize,
1341   _Out_ PDWORD RequiredSize,
1342   _In_opt_ PCSTR MachineName,
1343   _Reserved_ PVOID Reserved);
1344 
1345 _Success_(return != FALSE)
1346 WINSETUPAPI
1347 BOOL
1348 WINAPI
1349 SetupDiClassGuidsFromNameExW(
1350   _In_ PCWSTR ClassName,
1351   _Out_writes_to_(ClassGuidListSize, *RequiredSize) LPGUID ClassGuidList,
1352   _In_ DWORD ClassGuidListSize,
1353   _Out_ PDWORD RequiredSize,
1354   _In_opt_ PCWSTR MachineName,
1355   _Reserved_ PVOID Reserved);
1356 
1357 WINSETUPAPI
1358 BOOL
1359 WINAPI
1360 SetupDiClassNameFromGuidA(
1361   _In_ CONST GUID *ClassGuid,
1362   _Out_writes_(ClassNameSize) PSTR ClassName,
1363   _In_ DWORD ClassNameSize,
1364   _Out_opt_ PDWORD RequiredSize);
1365 
1366 WINSETUPAPI
1367 BOOL
1368 WINAPI
1369 SetupDiClassNameFromGuidW(
1370   _In_ CONST GUID *ClassGuid,
1371   _Out_writes_(ClassNameSize) PWSTR ClassName,
1372   _In_ DWORD ClassNameSize,
1373   _Out_opt_ PDWORD RequiredSize);
1374 
1375 WINSETUPAPI
1376 BOOL
1377 WINAPI
1378 SetupDiClassNameFromGuidExA(
1379   _In_ CONST GUID *ClassGuid,
1380   _Out_writes_(ClassNameSize) PSTR ClassName,
1381   _In_ DWORD ClassNameSize,
1382   _Out_opt_ PDWORD RequiredSize,
1383   _In_opt_ PCSTR MachineName,
1384   _Reserved_ PVOID Reserved);
1385 
1386 WINSETUPAPI
1387 BOOL
1388 WINAPI
1389 SetupDiClassNameFromGuidExW(
1390   _In_ CONST GUID *ClassGuid,
1391   _Out_writes_(ClassNameSize) PWSTR ClassName,
1392   _In_ DWORD ClassNameSize,
1393   _Out_opt_ PDWORD RequiredSize,
1394   _In_opt_ PCWSTR MachineName,
1395   _Reserved_ PVOID Reserved);
1396 
1397 WINSETUPAPI BOOL WINAPI SetupDiCreateDeviceInfoA(_In_ HDEVINFO, _In_ PCSTR, _In_ CONST GUID*, _In_opt_ PCSTR, _In_opt_ HWND, _In_ DWORD, _Out_opt_ PSP_DEVINFO_DATA);
1398 WINSETUPAPI BOOL WINAPI SetupDiCreateDeviceInfoW(_In_ HDEVINFO, _In_ PCWSTR, _In_ CONST GUID*, _In_opt_ PCWSTR, _In_opt_ HWND, _In_ DWORD, _Out_opt_ PSP_DEVINFO_DATA);
1399 _Check_return_ WINSETUPAPI HDEVINFO WINAPI SetupDiCreateDeviceInfoList(_In_opt_ CONST GUID*, _In_opt_ HWND);
1400 _Check_return_ WINSETUPAPI HDEVINFO WINAPI SetupDiCreateDeviceInfoListExA(_In_opt_ CONST GUID*, _In_opt_ HWND, _In_opt_ PCSTR, _Reserved_ PVOID);
1401 _Check_return_ WINSETUPAPI HDEVINFO WINAPI SetupDiCreateDeviceInfoListExW(_In_opt_ CONST GUID*, _In_opt_ HWND, _In_opt_ PCWSTR, _Reserved_ PVOID);
1402 WINSETUPAPI BOOL WINAPI SetupDiCreateDeviceInterfaceA(_In_ HDEVINFO, _In_ PSP_DEVINFO_DATA, _In_ CONST GUID*, _In_opt_ PCSTR, _In_ DWORD, _Out_opt_ PSP_DEVICE_INTERFACE_DATA);
1403 WINSETUPAPI BOOL WINAPI SetupDiCreateDeviceInterfaceW(_In_ HDEVINFO, _In_ PSP_DEVINFO_DATA, _In_ CONST GUID*, _In_opt_ PCWSTR, _In_ DWORD, _Out_opt_ PSP_DEVICE_INTERFACE_DATA);
1404 _Check_return_ WINSETUPAPI HKEY WINAPI SetupDiCreateDeviceInterfaceRegKeyA(_In_ HDEVINFO, _In_ PSP_DEVICE_INTERFACE_DATA, _Reserved_ DWORD, _In_ REGSAM, _In_opt_ HINF, _In_opt_ PCSTR);
1405 _Check_return_ WINSETUPAPI HKEY WINAPI SetupDiCreateDeviceInterfaceRegKeyW(_In_ HDEVINFO, _In_ PSP_DEVICE_INTERFACE_DATA, _Reserved_ DWORD, _In_ REGSAM, _In_opt_ HINF, _In_opt_ PCWSTR);
1406 _Check_return_ WINSETUPAPI HKEY WINAPI SetupDiCreateDevRegKeyA(_In_ HDEVINFO, _In_ PSP_DEVINFO_DATA, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_opt_ HINF, _In_opt_ PCSTR);
1407 _Check_return_ WINSETUPAPI HKEY WINAPI SetupDiCreateDevRegKeyW(_In_ HDEVINFO, _In_ PSP_DEVINFO_DATA, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_opt_ HINF, _In_opt_ PCWSTR);
1408 WINSETUPAPI BOOL WINAPI SetupDiDeleteDeviceInfo(_In_ HDEVINFO, _In_ PSP_DEVINFO_DATA);
1409 WINSETUPAPI BOOL WINAPI SetupDiDeleteDeviceInterfaceData(_In_ HDEVINFO, _In_ PSP_DEVICE_INTERFACE_DATA);
1410 WINSETUPAPI BOOL WINAPI SetupDiDeleteDeviceInterfaceRegKey(_In_ HDEVINFO, _In_ PSP_DEVICE_INTERFACE_DATA, _Reserved_ DWORD);
1411 WINSETUPAPI BOOL WINAPI SetupDiDeleteDevRegKey(_In_ HDEVINFO, _In_ PSP_DEVINFO_DATA, _In_ DWORD, _In_ DWORD, _In_ DWORD);
1412 WINSETUPAPI BOOL WINAPI SetupDiDestroyClassImageList(_In_ PSP_CLASSIMAGELIST_DATA);
1413 WINSETUPAPI BOOL WINAPI SetupDiDestroyDeviceInfoList(_In_ HDEVINFO);
1414 WINSETUPAPI BOOL WINAPI SetupDiDestroyDriverInfoList(_In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA, _In_ DWORD);
1415 WINSETUPAPI INT WINAPI SetupDiDrawMiniIcon(_In_ HDC, _In_ RECT, _In_ INT, _In_ DWORD);
1416 WINSETUPAPI BOOL WINAPI SetupDiEnumDeviceInfo(_In_ HDEVINFO, _In_ DWORD, _Out_ PSP_DEVINFO_DATA);
1417 WINSETUPAPI BOOL WINAPI SetupDiEnumDeviceInterfaces(_In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA, _In_ CONST GUID*, _In_ DWORD, _Out_ PSP_DEVICE_INTERFACE_DATA);
1418 WINSETUPAPI BOOL WINAPI SetupDiEnumDriverInfoA(_In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA, _In_ DWORD, _In_ DWORD, _Out_ PSP_DRVINFO_DATA_A);
1419 WINSETUPAPI BOOL WINAPI SetupDiEnumDriverInfoW(_In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA, _In_ DWORD, _In_ DWORD, _Out_ PSP_DRVINFO_DATA_W);
1420 
1421 WINSETUPAPI
1422 BOOL
1423 WINAPI
1424 SetupDiGetActualSectionToInstallA(
1425   _In_ HINF InfHandle,
1426   _In_ PCSTR InfSectionName,
1427   _Out_writes_opt_(InfSectionWithExtSize) PSTR InfSectionWithExt,
1428   _In_ DWORD InfSectionWithExtSize,
1429   _Out_opt_ PDWORD RequiredSize,
1430   _Out_opt_ PSTR *Extension);
1431 
1432 WINSETUPAPI
1433 BOOL
1434 WINAPI
1435 SetupDiGetActualSectionToInstallW(
1436   _In_ HINF InfHandle,
1437   _In_ PCWSTR InfSectionName,
1438   _Out_writes_opt_(InfSectionWithExtSize) PWSTR InfSectionWithExt,
1439   _In_ DWORD InfSectionWithExtSize,
1440   _Out_opt_ PDWORD RequiredSize,
1441   _Out_opt_ PWSTR *Extension);
1442 
1443 WINSETUPAPI
1444 BOOL
1445 WINAPI
1446 SetupDiGetActualSectionToInstallExA(
1447   _In_ HINF InfHandle,
1448   _In_ PCSTR InfSectionName,
1449   _In_opt_ PSP_ALTPLATFORM_INFO AlternatePlatformInfo,
1450   _Out_writes_opt_(InfSectionWithExtSize) PSTR InfSectionWithExt,
1451   _In_ DWORD InfSectionWithExtSize,
1452   _Out_opt_ PDWORD RequiredSize,
1453   _Out_opt_ PSTR *Extension,
1454   _Reserved_ PVOID Reserved);
1455 
1456 WINSETUPAPI
1457 BOOL
1458 WINAPI
1459 SetupDiGetActualSectionToInstallExW(
1460   _In_ HINF InfHandle,
1461   _In_ PCWSTR InfSectionName,
1462   _In_opt_ PSP_ALTPLATFORM_INFO AlternatePlatformInfo,
1463   _Out_writes_opt_(InfSectionWithExtSize) PWSTR InfSectionWithExt,
1464   _In_ DWORD InfSectionWithExtSize,
1465   _Out_opt_ PDWORD RequiredSize,
1466   _Out_opt_ PWSTR *Extension,
1467   _Reserved_ PVOID Reserved);
1468 
1469 WINSETUPAPI BOOL WINAPI SetupDiGetClassBitmapIndex(_In_opt_ CONST GUID*, _Out_ PINT);
1470 
1471 WINSETUPAPI
1472 BOOL
1473 WINAPI
1474 SetupDiGetClassDescriptionA(
1475   _In_ CONST GUID *ClassGuid,
1476   _Out_writes_(ClassDescriptionSize) PSTR ClassDescription,
1477   _In_ DWORD ClassDescriptionSize,
1478   _Out_opt_ PDWORD RequiredSize);
1479 
1480 WINSETUPAPI
1481 BOOL
1482 WINAPI
1483 SetupDiGetClassDescriptionW(
1484   _In_ CONST GUID *ClassGuid,
1485   _Out_writes_(ClassDescriptionSize) PWSTR ClassDescription,
1486   _In_ DWORD ClassDescriptionSize,
1487   _Out_opt_ PDWORD RequiredSize);
1488 
1489 WINSETUPAPI
1490 BOOL
1491 WINAPI
1492 SetupDiGetClassDescriptionExA(
1493   _In_ CONST GUID *ClassGuid,
1494   _Out_writes_(ClassDescriptionSize) PSTR ClassDescription,
1495   _In_ DWORD ClassDescriptionSize,
1496   _Out_opt_ PDWORD RequiredSize,
1497   _In_opt_ PCSTR MachineName,
1498   _Reserved_ PVOID Reserved);
1499 
1500 WINSETUPAPI
1501 BOOL
1502 WINAPI
1503 SetupDiGetClassDescriptionExW(
1504   _In_ CONST GUID *ClassGuid,
1505   _Out_writes_(ClassDescriptionSize) PWSTR ClassDescription,
1506   _In_ DWORD ClassDescriptionSize,
1507   _Out_opt_ PDWORD RequiredSize,
1508   _In_opt_ PCWSTR MachineName,
1509   _Reserved_ PVOID Reserved);
1510 
1511 WINSETUPAPI BOOL WINAPI SetupDiGetClassDevPropertySheetsA(_In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA, _In_ LPPROPSHEETHEADERA, _In_ DWORD, _Out_opt_ PDWORD, _In_ DWORD);
1512 WINSETUPAPI BOOL WINAPI SetupDiGetClassDevPropertySheetsW(_In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA, _In_ LPPROPSHEETHEADERW, _In_ DWORD, _Out_opt_ PDWORD, _In_ DWORD);
1513 _Check_return_ WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsA(_In_opt_ CONST GUID*, _In_opt_ PCSTR, _In_opt_ HWND, _In_ DWORD);
1514 _Check_return_ WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsW(_In_opt_ CONST GUID*, _In_opt_ PCWSTR, _In_opt_ HWND, _In_ DWORD);
1515 _Check_return_ WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsExA(_In_opt_ CONST GUID*, _In_opt_ PCSTR, _In_opt_ HWND, _In_ DWORD, _In_opt_ HDEVINFO, _In_opt_ PCSTR, _Reserved_ PVOID);
1516 _Check_return_ WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsExW(_In_opt_ CONST GUID*, _In_opt_ PCWSTR, _In_opt_ HWND, _In_ DWORD, _In_opt_ HDEVINFO, _In_opt_ PCWSTR, _Reserved_ PVOID);
1517 WINSETUPAPI BOOL WINAPI SetupDiGetClassImageIndex(_In_ PSP_CLASSIMAGELIST_DATA, _In_ CONST GUID*, _Out_ PINT);
1518 WINSETUPAPI BOOL WINAPI SetupDiGetClassImageList(_Out_ PSP_CLASSIMAGELIST_DATA);
1519 WINSETUPAPI BOOL WINAPI SetupDiGetClassImageListExA(_Out_ PSP_CLASSIMAGELIST_DATA, _In_opt_ PCSTR, _Reserved_ PVOID);
1520 WINSETUPAPI BOOL WINAPI SetupDiGetClassImageListExW(_Out_ PSP_CLASSIMAGELIST_DATA, _In_opt_ PCWSTR, _Reserved_ PVOID);
1521 
1522 _Success_(return != FALSE)
1523 WINSETUPAPI
1524 BOOL
1525 WINAPI
1526 SetupDiGetClassInstallParamsA(
1527   _In_ HDEVINFO DeviceInfoSet,
1528   _In_opt_ PSP_DEVINFO_DATA DeviceInfoData,
1529   _Out_writes_bytes_to_opt_(ClassInstallParamsSize, *RequiredSize) PSP_CLASSINSTALL_HEADER ClassInstallParams,
1530   _In_ DWORD ClassInstallParamsSize,
1531   _Out_opt_ PDWORD RequiredSize);
1532 
1533 _Success_(return != FALSE)
1534 WINSETUPAPI
1535 BOOL
1536 WINAPI
1537 SetupDiGetClassInstallParamsW(
1538   _In_ HDEVINFO DeviceInfoSet,
1539   _In_opt_ PSP_DEVINFO_DATA DeviceInfoData,
1540   _Out_writes_bytes_to_opt_(ClassInstallParamsSize, *RequiredSize) PSP_CLASSINSTALL_HEADER ClassInstallParams,
1541   _In_ DWORD ClassInstallParamsSize,
1542   _Out_opt_ PDWORD RequiredSize);
1543 
1544 _Success_(return != FALSE)
1545 WINSETUPAPI
1546 BOOL
1547 WINAPI
1548 SetupDiGetClassRegistryPropertyA(
1549   _In_ CONST GUID *ClassGuid,
1550   _In_ DWORD Property,
1551   _Out_opt_ PDWORD PropertyRegDataType,
1552   _Out_writes_bytes_to_(PropertyBufferSize, *RequiredSize) PBYTE PropertyBuffer,
1553   _In_ DWORD PropertyBufferSize,
1554   _Out_opt_ PDWORD RequiredSize,
1555   _In_opt_ PCSTR MachineName,
1556   _Reserved_ PVOID Reserved);
1557 
1558 _Success_(return != FALSE)
1559 WINSETUPAPI
1560 BOOL
1561 WINAPI
1562 SetupDiGetClassRegistryPropertyW(
1563   _In_ CONST GUID *ClassGuid,
1564   _In_ DWORD Property,
1565   _Out_opt_ PDWORD PropertyRegDataType,
1566   _Out_writes_bytes_to_(PropertyBufferSize, *RequiredSize) PBYTE PropertyBuffer,
1567   _In_ DWORD PropertyBufferSize,
1568   _Out_opt_ PDWORD RequiredSize,
1569   _In_opt_ PCWSTR MachineName,
1570   _Reserved_ PVOID Reserved);
1571 
1572 WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInfoListClass(_In_ HDEVINFO, _Out_ LPGUID);
1573 WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInfoListDetailA(_In_ HDEVINFO, _Out_ PSP_DEVINFO_LIST_DETAIL_DATA_A);
1574 WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInfoListDetailW(_In_ HDEVINFO, _Out_ PSP_DEVINFO_LIST_DETAIL_DATA_W);
1575 WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInstallParamsA(_In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA, _Out_ PSP_DEVINSTALL_PARAMS_A);
1576 WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInstallParamsW(_In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA, _Out_ PSP_DEVINSTALL_PARAMS_W);
1577 
1578 WINSETUPAPI
1579 BOOL
1580 WINAPI
1581 SetupDiGetDeviceInstanceIdA(
1582   _In_ HDEVINFO DeviceInfoSet,
1583   _In_ PSP_DEVINFO_DATA DeviceInfoData,
1584   _Out_writes_opt_(DeviceInstanceIdSize) PSTR DeviceInstanceId,
1585   _In_ DWORD DeviceInstanceIdSize,
1586   _Out_opt_ PDWORD RequiredSize);
1587 
1588 WINSETUPAPI
1589 BOOL
1590 WINAPI
1591 SetupDiGetDeviceInstanceIdW(
1592   _In_ HDEVINFO DeviceInfoSet,
1593   _In_ PSP_DEVINFO_DATA DeviceInfoData,
1594   _Out_writes_opt_(DeviceInstanceIdSize) PWSTR DeviceInstanceId,
1595   _In_ DWORD DeviceInstanceIdSize,
1596   _Out_opt_ PDWORD RequiredSize);
1597 
1598 WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInterfaceAlias(_In_ HDEVINFO, _In_ PSP_DEVICE_INTERFACE_DATA, _In_ CONST GUID*, _Out_ PSP_DEVICE_INTERFACE_DATA);
1599 
1600 _Success_(return != FALSE)
1601 _At_((LPSTR)DeviceInterfaceDetailData->DevicePath, _Post_z_)
1602 WINSETUPAPI
1603 BOOL
1604 WINAPI
1605 SetupDiGetDeviceInterfaceDetailA(
1606   _In_ HDEVINFO DeviceInfoSet,
1607   _In_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,
1608   _Inout_updates_bytes_to_opt_(DeviceInterfaceDetailDataSize, *RequiredSize) PSP_DEVICE_INTERFACE_DETAIL_DATA_A DeviceInterfaceDetailData,
1609   _In_ DWORD DeviceInterfaceDetailDataSize,
1610   _Out_opt_ _Out_range_(>=, sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_A)) PDWORD RequiredSize,
1611   _Out_opt_ PSP_DEVINFO_DATA DeviceInfoData);
1612 
1613 _Success_(return != FALSE)
1614 _At_((LPWSTR)DeviceInterfaceDetailData->DevicePath, _Post_z_)
1615 WINSETUPAPI
1616 BOOL
1617 WINAPI
1618 SetupDiGetDeviceInterfaceDetailW(
1619   _In_ HDEVINFO DeviceInfoSet,
1620   _In_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,
1621   _Out_writes_bytes_to_opt_(DeviceInterfaceDetailDataSize, *RequiredSize) PSP_DEVICE_INTERFACE_DETAIL_DATA_W DeviceInterfaceDetailData,
1622   _In_ DWORD DeviceInterfaceDetailDataSize,
1623   _Out_opt_ _Out_range_(>=, sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_W)) PDWORD RequiredSize,
1624   _Out_opt_ PSP_DEVINFO_DATA DeviceInfoData);
1625 
1626 _Success_(return != FALSE)
1627 _When_((*PropertyRegDataType == REG_SZ), _At_((PSTR) PropertyBuffer, _Post_valid_))
1628 _When_((*PropertyRegDataType == REG_MULTI_SZ), _At_((PZZSTR) PropertyBuffer, _Post_valid_))
1629 WINSETUPAPI
1630 BOOL
1631 WINAPI
1632 SetupDiGetDeviceRegistryPropertyA(
1633   _In_ HDEVINFO DeviceInfoSet,
1634   _In_ PSP_DEVINFO_DATA DeviceInfoData,
1635   _In_ DWORD Property,
1636   _Out_opt_ PDWORD PropertyRegDataType,
1637   _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize) PBYTE PropertyBuffer,
1638   _In_ DWORD PropertyBufferSize,
1639   _Out_opt_ PDWORD RequiredSize);
1640 
1641 _Success_(return != FALSE)
1642 _When_((*PropertyRegDataType == REG_SZ), _At_((PWSTR) PropertyBuffer, _Post_valid_))
1643 _When_((*PropertyRegDataType == REG_MULTI_SZ), _At_((PZZWSTR) PropertyBuffer, _Post_valid_))
1644 WINSETUPAPI
1645 BOOL
1646 WINAPI
1647 SetupDiGetDeviceRegistryPropertyW(
1648   _In_ HDEVINFO DeviceInfoSet,
1649   _In_ PSP_DEVINFO_DATA DeviceInfoData,
1650   _In_ DWORD Property,
1651   _Out_opt_ PDWORD PropertyRegDataType,
1652   _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize) PBYTE PropertyBuffer,
1653   _In_ DWORD PropertyBufferSize,
1654   _Out_opt_ PDWORD RequiredSize);
1655 
1656 WINSETUPAPI
1657 BOOL
1658 WINAPI
1659 SetupDiGetDriverInfoDetailA(
1660   _In_ HDEVINFO DeviceInfoSet,
1661   _In_opt_ PSP_DEVINFO_DATA DeviceInfoData,
1662   _In_ PSP_DRVINFO_DATA_A DriverInfoData,
1663   _Inout_updates_bytes_opt_(DriverInfoDetailDataSize) PSP_DRVINFO_DETAIL_DATA_A DriverInfoDetailData,
1664   _In_ DWORD DriverInfoDetailDataSize,
1665   _Out_opt_ PDWORD RequiredSize);
1666 
1667 WINSETUPAPI
1668 BOOL
1669 WINAPI
1670 SetupDiGetDriverInfoDetailW(
1671   _In_ HDEVINFO DeviceInfoSet,
1672   _In_opt_ PSP_DEVINFO_DATA DeviceInfoData,
1673   _In_ PSP_DRVINFO_DATA_W DriverInfoData,
1674   _Inout_updates_bytes_opt_(DriverInfoDetailDataSize) PSP_DRVINFO_DETAIL_DATA_W DriverInfoDetailData,
1675   _In_ DWORD DriverInfoDetailDataSize,
1676   _Out_opt_ PDWORD RequiredSize);
1677 
1678 WINSETUPAPI BOOL WINAPI SetupDiGetDriverInstallParamsA(_In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA, _In_ PSP_DRVINFO_DATA_A, _Out_ PSP_DRVINSTALL_PARAMS);
1679 WINSETUPAPI BOOL WINAPI SetupDiGetDriverInstallParamsW(_In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA, _In_ PSP_DRVINFO_DATA_W, _Out_ PSP_DRVINSTALL_PARAMS);
1680 
1681 WINSETUPAPI
1682 BOOL
1683 WINAPI
1684 SetupDiGetHwProfileFriendlyNameA(
1685   _In_ DWORD HwProfile,
1686   _Out_writes_(FriendlyNameSize) PSTR FriendlyName,
1687   _In_ DWORD FriendlyNameSize,
1688   _Out_opt_ PDWORD RequiredSize);
1689 
1690 WINSETUPAPI
1691 BOOL
1692 WINAPI
1693 SetupDiGetHwProfileFriendlyNameW(
1694   _In_ DWORD HwProfile,
1695   _Out_writes_(FriendlyNameSize) PWSTR FriendlyName,
1696   _In_ DWORD FriendlyNameSize,
1697   _Out_opt_ PDWORD RequiredSize);
1698 
1699 WINSETUPAPI
1700 BOOL
1701 WINAPI
1702 SetupDiGetHwProfileFriendlyNameExA(
1703   _In_ DWORD HwProfile,
1704   _Out_writes_(FriendlyNameSize) PSTR FriendlyName,
1705   _In_ DWORD FriendlyNameSize,
1706   _Out_opt_ PDWORD RequiredSize,
1707   _In_opt_ PCSTR MachineName,
1708   _Reserved_ PVOID Reserved);
1709 
1710 WINSETUPAPI
1711 BOOL
1712 WINAPI
1713 SetupDiGetHwProfileFriendlyNameExW(
1714   _In_ DWORD HwProfile,
1715   _Out_writes_(FriendlyNameSize) PWSTR FriendlyName,
1716   _In_ DWORD FriendlyNameSize,
1717   _Out_opt_ PDWORD RequiredSize,
1718   _In_opt_ PCWSTR MachineName,
1719   _Reserved_ PVOID Reserved);
1720 
1721 WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileFriendlyNameW(DWORD,PWSTR,DWORD,PDWORD);
1722 
1723 _Success_(return != FALSE)
1724 WINSETUPAPI
1725 BOOL
1726 WINAPI
1727 SetupDiGetHwProfileList(
1728   _Out_writes_to_(HwProfileListSize, *RequiredSize) PDWORD HwProfileList,
1729   _In_ DWORD HwProfileListSize,
1730   _Out_ PDWORD RequiredSize,
1731   _Out_opt_ PDWORD CurrentlyActiveIndex);
1732 
1733 _Success_(return != FALSE)
1734 WINSETUPAPI
1735 BOOL
1736 WINAPI
1737 SetupDiGetHwProfileListExA(
1738   _Out_writes_to_(HwProfileListSize, *RequiredSize) PDWORD HwProfileList,
1739   _In_ DWORD HwProfileListSize,
1740   _Out_ PDWORD RequiredSize,
1741   _Out_opt_ PDWORD CurrentlyActiveIndex,
1742   _In_opt_ PCSTR MachineName,
1743   _Reserved_ PVOID Reserved);
1744 
1745 _Success_(return != FALSE)
1746 WINSETUPAPI
1747 BOOL
1748 WINAPI
1749 SetupDiGetHwProfileListExW(
1750   _Out_writes_to_(HwProfileListSize, *RequiredSize) PDWORD HwProfileList,
1751   _In_ DWORD HwProfileListSize,
1752   _Out_ PDWORD RequiredSize,
1753   _Out_opt_ PDWORD CurrentlyActiveIndex,
1754   _In_opt_ PCWSTR MachineName,
1755   _Reserved_ PVOID Reserved);
1756 
1757 WINSETUPAPI
1758 BOOL
1759 WINAPI
1760 SetupDiGetINFClassA(
1761   _In_ PCSTR InfName,
1762   _Out_ LPGUID ClassGuid,
1763   _Out_writes_(ClassNameSize) PSTR ClassName,
1764   _In_ DWORD ClassNameSize,
1765   _Out_opt_ PDWORD RequiredSize);
1766 
1767 WINSETUPAPI
1768 BOOL
1769 WINAPI
1770 SetupDiGetINFClassW(
1771   _In_ PCWSTR InfName,
1772   _Out_ LPGUID ClassGuid,
1773   _Out_writes_(ClassNameSize) PWSTR ClassName,
1774   _In_ DWORD ClassNameSize,
1775   _Out_opt_ PDWORD RequiredSize);
1776 
1777 WINSETUPAPI BOOL WINAPI SetupDiGetSelectedDevice(_In_ HDEVINFO, _Out_ PSP_DEVINFO_DATA);
1778 WINSETUPAPI BOOL WINAPI SetupDiGetSelectedDriverA(_In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA, _Out_ PSP_DRVINFO_DATA_A);
1779 WINSETUPAPI BOOL WINAPI SetupDiGetSelectedDriverW(_In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA, _Out_ PSP_DRVINFO_DATA_W);
1780 WINSETUPAPI HPROPSHEETPAGE WINAPI SetupDiGetWizardPage(_In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA, _In_ PSP_INSTALLWIZARD_DATA, _In_ DWORD, _In_ DWORD);
1781 WINSETUPAPI BOOL WINAPI SetupDiInstallClassA(_In_opt_ HWND, _In_ PCSTR, _In_ DWORD, _In_opt_ HSPFILEQ);
1782 WINSETUPAPI BOOL WINAPI SetupDiInstallClassW(_In_opt_ HWND, _In_ PCWSTR, _In_ DWORD, _In_opt_ HSPFILEQ);
1783 WINSETUPAPI BOOL WINAPI SetupDiInstallClassExA(_In_opt_ HWND, _In_opt_ PCSTR, _In_ DWORD, _In_opt_ HSPFILEQ, _In_opt_ CONST GUID*, _Reserved_ PVOID, _Reserved_ PVOID);
1784 WINSETUPAPI BOOL WINAPI SetupDiInstallClassExW(_In_opt_ HWND, _In_opt_ PCWSTR, _In_ DWORD, _In_opt_ HSPFILEQ, _In_opt_ CONST GUID*, _Reserved_ PVOID, _Reserved_ PVOID);
1785 WINSETUPAPI BOOL WINAPI SetupDiInstallDevice(_In_ HDEVINFO, _Inout_ PSP_DEVINFO_DATA);
1786 WINSETUPAPI BOOL WINAPI SetupDiInstallDeviceInterfaces(_In_ HDEVINFO, _In_ PSP_DEVINFO_DATA);
1787 WINSETUPAPI BOOL WINAPI SetupDiInstallDriverFiles(_In_ HDEVINFO, _In_ PSP_DEVINFO_DATA);
1788 WINSETUPAPI BOOL WINAPI SetupDiLoadClassIcon(_In_ CONST GUID*, _Out_opt_ HICON*, _Out_opt_ PINT);
1789 WINSETUPAPI BOOL WINAPI SetupDiMoveDuplicateDevice(HDEVINFO,PSP_DEVINFO_DATA);
1790 _Check_return_ WINSETUPAPI HKEY WINAPI SetupDiOpenClassRegKey(_In_opt_ CONST GUID*, _In_ REGSAM);
1791 _Check_return_ WINSETUPAPI HKEY WINAPI SetupDiOpenClassRegKeyExA(_In_opt_ CONST GUID*, _In_ REGSAM, _In_ DWORD, _In_opt_ PCSTR, _Reserved_ PVOID);
1792 _Check_return_ WINSETUPAPI HKEY WINAPI SetupDiOpenClassRegKeyExW(_In_opt_ CONST GUID*, _In_ REGSAM, _In_ DWORD, _In_opt_ PCWSTR, _Reserved_ PVOID);
1793 WINSETUPAPI BOOL WINAPI SetupDiOpenDeviceInfoA(_In_ HDEVINFO, _In_ PCSTR, _In_opt_ HWND, _In_ DWORD, _Out_opt_ PSP_DEVINFO_DATA);
1794 WINSETUPAPI BOOL WINAPI SetupDiOpenDeviceInfoW(_In_ HDEVINFO, _In_ PCWSTR, _In_opt_ HWND, _In_ DWORD, _Out_opt_ PSP_DEVINFO_DATA);
1795 WINSETUPAPI BOOL WINAPI SetupDiOpenDeviceInterfaceA(_In_ HDEVINFO, _In_ PCSTR, _In_ DWORD, _Out_opt_ PSP_DEVICE_INTERFACE_DATA);
1796 WINSETUPAPI BOOL WINAPI SetupDiOpenDeviceInterfaceW(_In_ HDEVINFO, _In_ PCWSTR, _In_ DWORD, _Out_opt_ PSP_DEVICE_INTERFACE_DATA);
1797 _Check_return_ WINSETUPAPI HKEY WINAPI SetupDiOpenDeviceInterfaceRegKey(_In_ HDEVINFO, _In_ PSP_DEVICE_INTERFACE_DATA, _Reserved_ DWORD, _In_ REGSAM);
1798 _Check_return_ WINSETUPAPI HKEY WINAPI SetupDiOpenDevRegKey(_In_ HDEVINFO, _In_ PSP_DEVINFO_DATA, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ REGSAM);
1799 WINSETUPAPI BOOL WINAPI SetupDiRegisterCoDeviceInstallers(_In_ HDEVINFO, _In_ PSP_DEVINFO_DATA);
1800 WINSETUPAPI BOOL WINAPI SetupDiRegisterDeviceInfo(_In_ HDEVINFO, _Inout_ PSP_DEVINFO_DATA, _In_ DWORD, _In_opt_ PSP_DETSIG_CMPPROC, _In_opt_ PVOID, _Out_opt_ PSP_DEVINFO_DATA);
1801 WINSETUPAPI BOOL WINAPI SetupDiRemoveDevice(_In_ HDEVINFO, _Inout_ PSP_DEVINFO_DATA);
1802 WINSETUPAPI BOOL WINAPI SetupDiRemoveDeviceInterface(_In_ HDEVINFO, _Inout_ PSP_DEVICE_INTERFACE_DATA);
1803 WINSETUPAPI BOOL WINAPI SetupDiRestartDevices(_In_ HDEVINFO, _Inout_ PSP_DEVINFO_DATA);
1804 WINSETUPAPI BOOL WINAPI SetupDiSelectBestCompatDrv(_In_ HDEVINFO, _Inout_opt_ PSP_DEVINFO_DATA);
1805 WINSETUPAPI BOOL WINAPI SetupDiSelectDevice(_In_ HDEVINFO, _Inout_opt_ PSP_DEVINFO_DATA);
1806 WINSETUPAPI BOOL WINAPI SetupDiSelectOEMDrv(_In_opt_ HWND, _In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA);
1807 
1808 WINSETUPAPI
1809 BOOL
1810 WINAPI
1811 SetupDiSetClassInstallParamsA(
1812   _In_ HDEVINFO DeviceInfoSet,
1813   _In_opt_ PSP_DEVINFO_DATA DeviceInfoData,
1814   _In_reads_bytes_opt_(ClassInstallParamsSize) PSP_CLASSINSTALL_HEADER ClassInstallParams,
1815   _In_ DWORD ClassInstallParamsSize);
1816 
1817 WINSETUPAPI
1818 BOOL
1819 WINAPI
1820 SetupDiSetClassInstallParamsW(
1821   _In_ HDEVINFO DeviceInfoSet,
1822   _In_opt_ PSP_DEVINFO_DATA DeviceInfoData,
1823   _In_reads_bytes_opt_(ClassInstallParamsSize) PSP_CLASSINSTALL_HEADER ClassInstallParams,
1824   _In_ DWORD ClassInstallParamsSize);
1825 
1826 WINSETUPAPI
1827 BOOL
1828 WINAPI
1829 SetupDiSetClassRegistryPropertyA(
1830   _In_ CONST GUID *ClassGuid,
1831   _In_ DWORD Property,
1832   _In_reads_bytes_opt_(PropertyBufferSize) CONST BYTE *PropertyBuffer,
1833   _In_ DWORD PropertyBufferSize,
1834   _In_opt_ PCSTR MachineName,
1835   _Reserved_ PVOID Reserved);
1836 
1837 WINSETUPAPI
1838 BOOL
1839 WINAPI
1840 SetupDiSetClassRegistryPropertyW(
1841   _In_ CONST GUID *ClassGuid,
1842   _In_ DWORD Property,
1843   _In_reads_bytes_opt_(PropertyBufferSize) CONST BYTE *PropertyBuffer,
1844   _In_ DWORD PropertyBufferSize,
1845   _In_opt_ PCWSTR MachineName,
1846   _Reserved_ PVOID Reserved);
1847 
1848 WINSETUPAPI BOOL WINAPI SetupDiSetDeviceInstallParamsA(_In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA, _In_ PSP_DEVINSTALL_PARAMS_A);
1849 WINSETUPAPI BOOL WINAPI SetupDiSetDeviceInstallParamsW(_In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA, _In_ PSP_DEVINSTALL_PARAMS_W);
1850 
1851 WINSETUPAPI
1852 BOOL
1853 WINAPI
1854 SetupDiSetDeviceRegistryPropertyA(
1855   _In_ HDEVINFO DeviceInfoSet,
1856   _Inout_ PSP_DEVINFO_DATA DeviceInfoData,
1857   _In_ DWORD Property,
1858   _In_reads_bytes_opt_(PropertyBufferSize) CONST BYTE *PropertyBuffer,
1859   _In_ DWORD PropertyBufferSize);
1860 
1861 WINSETUPAPI
1862 BOOL
1863 WINAPI
1864 SetupDiSetDeviceRegistryPropertyW(
1865   _In_ HDEVINFO DeviceInfoSet,
1866   _Inout_ PSP_DEVINFO_DATA DeviceInfoData,
1867   _In_ DWORD Property,
1868   _In_reads_bytes_opt_(PropertyBufferSize) CONST BYTE *PropertyBuffer,
1869   _In_ DWORD PropertyBufferSize);
1870 
1871 WINSETUPAPI BOOL WINAPI SetupDiSetDriverInstallParamsA(_In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA, _In_ PSP_DRVINFO_DATA_A, _In_ PSP_DRVINSTALL_PARAMS);
1872 WINSETUPAPI BOOL WINAPI SetupDiSetDriverInstallParamsW(_In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA, _In_ PSP_DRVINFO_DATA_W, _In_ PSP_DRVINSTALL_PARAMS);
1873 WINSETUPAPI BOOL WINAPI SetupDiSetSelectedDevice(_In_ HDEVINFO, _In_ PSP_DEVINFO_DATA);
1874 WINSETUPAPI BOOL WINAPI SetupDiSetSelectedDriverA(_In_ HDEVINFO, _Inout_opt_ PSP_DEVINFO_DATA, _Inout_opt_ PSP_DRVINFO_DATA_A);
1875 WINSETUPAPI BOOL WINAPI SetupDiSetSelectedDriverW(_In_ HDEVINFO, _Inout_opt_ PSP_DEVINFO_DATA, _Inout_opt_ PSP_DRVINFO_DATA_W);
1876 WINSETUPAPI BOOL WINAPI SetupDiUnremoveDevice(_In_ HDEVINFO, _Inout_ PSP_DEVINFO_DATA);
1877 WINSETUPAPI HDSKSPC WINAPI SetupDuplicateDiskSpaceListA(_In_ HDSKSPC, _Reserved_ PVOID, _Reserved_ DWORD, _In_ UINT);
1878 WINSETUPAPI HDSKSPC WINAPI SetupDuplicateDiskSpaceListW(_In_ HDSKSPC, _Reserved_ PVOID, _Reserved_ DWORD, _In_ UINT);
1879 WINSETUPAPI BOOL WINAPI SetupFindFirstLineA(_In_ HINF, _In_ PCSTR, _In_opt_ PCSTR, _Out_ PINFCONTEXT);
1880 WINSETUPAPI BOOL WINAPI SetupFindFirstLineW(_In_ HINF, _In_ PCWSTR, _In_opt_ PCWSTR, _Out_ PINFCONTEXT);
1881 WINSETUPAPI BOOL WINAPI SetupFindNextLine(_In_ PINFCONTEXT, _Out_ PINFCONTEXT);
1882 WINSETUPAPI BOOL WINAPI SetupFindNextMatchLineA(_In_ PINFCONTEXT, _In_opt_ PCSTR, _Out_ PINFCONTEXT);
1883 WINSETUPAPI BOOL WINAPI SetupFindNextMatchLineW(_In_ PINFCONTEXT, _In_opt_ PCWSTR, _Out_ PINFCONTEXT);
1884 WINSETUPAPI BOOL WINAPI SetupFreeA(PCSTR**,UINT);
1885 WINSETUPAPI BOOL WINAPI SetupFreeW(PCWSTR**,UINT);
1886 WINSETUPAPI BOOL WINAPI SetupGetBackupInformationA(_In_ HSPFILEQ, _Inout_ PSP_BACKUP_QUEUE_PARAMS_A);
1887 WINSETUPAPI BOOL WINAPI SetupGetBackupInformationW(_In_ HSPFILEQ, _Inout_ PSP_BACKUP_QUEUE_PARAMS_W);
1888 
1889 _Success_(return != FALSE)
1890 WINSETUPAPI
1891 BOOL
1892 WINAPI
1893 SetupGetBinaryField(
1894   _In_ PINFCONTEXT Context,
1895   _In_ DWORD FieldIndex,
1896   _Out_writes_bytes_to_opt_(ReturnBufferSize, *RequiredSize) PBYTE ReturnBuffer,
1897   _In_ DWORD ReturnBufferSize,
1898   _Out_opt_ LPDWORD RequiredSize);
1899 
1900 WINSETUPAPI DWORD WINAPI SetupGetFieldCount(_In_ PINFCONTEXT);
1901 WINSETUPAPI DWORD WINAPI SetupGetFileCompressionInfoA(_In_ PCSTR, _Out_ PSTR*, _Out_ PDWORD, _Out_ PDWORD, _Out_ PUINT);
1902 WINSETUPAPI DWORD WINAPI SetupGetFileCompressionInfoW(_In_ PCWSTR, _Out_ PWSTR*, _Out_ PDWORD, _Out_ PDWORD, _Out_ PUINT);
1903 
1904 WINSETUPAPI
1905 BOOL
1906 WINAPI
1907 SetupGetFileCompressionInfoExA(
1908   _In_ PCSTR SourceFileName,
1909   _In_reads_opt_(ActualSourceFileNameBufferLen) PSTR ActualSourceFileNameBuffer,
1910   _In_ DWORD ActualSourceFileNameBufferLen,
1911   _Out_opt_ PDWORD RequiredBufferLen,
1912   _Out_ PDWORD SourceFileSize,
1913   _Out_ PDWORD TargetFileSize,
1914   _Out_ PUINT CompressionType);
1915 
1916 WINSETUPAPI
1917 BOOL
1918 WINAPI
1919 SetupGetFileCompressionInfoExW(
1920   _In_ PCWSTR SourceFileName,
1921   _In_reads_opt_(ActualSourceFileNameBufferLen) PWSTR ActualSourceFileNameBuffer,
1922   _In_ DWORD ActualSourceFileNameBufferLen,
1923   _Out_opt_ PDWORD RequiredBufferLen,
1924   _Out_ PDWORD SourceFileSize,
1925   _Out_ PDWORD TargetFileSize,
1926   _Out_ PUINT CompressionType);
1927 
1928 WINSETUPAPI
1929 BOOL
1930 WINAPI
1931 SetupGetInfFileListA(
1932   _In_opt_ PCSTR DirectoryPath,
1933   _In_ DWORD InfStyle,
1934   _Out_writes_opt_(ReturnBufferSize) PSTR ReturnBuffer,
1935   _In_ DWORD ReturnBufferSize,
1936   _Out_opt_ PDWORD RequiredSize);
1937 
1938 WINSETUPAPI
1939 BOOL
1940 WINAPI
1941 SetupGetInfFileListW(
1942   _In_opt_ PCWSTR DirectoryPath,
1943   _In_ DWORD InfStyle,
1944   _Out_writes_(ReturnBufferSize) PWSTR ReturnBuffer,
1945   _In_ DWORD ReturnBufferSize,
1946   _Out_opt_ PDWORD RequiredSize);
1947 
1948 _Success_(return != FALSE)
1949 WINSETUPAPI
1950 BOOL
1951 WINAPI
1952 SetupGetInfInformationA(
1953   _In_ LPCVOID InfSpec,
1954   _In_ DWORD SearchControl,
1955   _Out_writes_bytes_to_opt_(ReturnBufferSize, *RequiredSize) PSP_INF_INFORMATION ReturnBuffer,
1956   _In_ DWORD ReturnBufferSize,
1957   _Out_opt_ PDWORD RequiredSize);
1958 
1959 _Success_(return != FALSE)
1960 WINSETUPAPI
1961 BOOL
1962 WINAPI
1963 SetupGetInfInformationW(
1964   _In_ LPCVOID InfSpec,
1965   _In_ DWORD SearchControl,
1966   _Out_writes_bytes_to_opt_(ReturnBufferSize, *RequiredSize) PSP_INF_INFORMATION ReturnBuffer,
1967   _In_ DWORD ReturnBufferSize,
1968   _Out_opt_ PDWORD RequiredSize);
1969 
1970 WINSETUPAPI BOOL WINAPI SetupGetIntField(_In_ PINFCONTEXT, _In_ DWORD, _Out_ PINT);
1971 WINSETUPAPI BOOL WINAPI SetupGetLineByIndexA(_In_ HINF, _In_ PCSTR, _In_ DWORD, _Out_ PINFCONTEXT);
1972 WINSETUPAPI BOOL WINAPI SetupGetLineByIndexW(_In_ HINF, _In_ PCWSTR, _In_ DWORD, _Out_ PINFCONTEXT);
1973 WINSETUPAPI LONG WINAPI SetupGetLineCountA(_In_ HINF, _In_ PCSTR);
1974 WINSETUPAPI LONG WINAPI SetupGetLineCountW(_In_ HINF, _In_ PCWSTR);
1975 
1976 WINSETUPAPI
1977 BOOL
1978 WINAPI
1979 SetupGetLineTextA(
1980   _In_opt_ PINFCONTEXT Context,
1981   _In_opt_ HINF InfHandle,
1982   _In_opt_ PCSTR Section,
1983   _In_opt_ PCSTR Key,
1984   _Out_writes_opt_(ReturnBufferSize) PSTR ReturnBuffer,
1985   _In_ DWORD ReturnBufferSize,
1986   _Out_opt_ PDWORD RequiredSize);
1987 
1988 WINSETUPAPI
1989 BOOL
1990 WINAPI
1991 SetupGetLineTextW(
1992   _In_opt_ PINFCONTEXT Context,
1993   _In_opt_ HINF InfHandle,
1994   _In_opt_ PCWSTR Section,
1995   _In_opt_ PCWSTR Key,
1996   _Out_writes_opt_(ReturnBufferSize) PWSTR ReturnBuffer,
1997   _In_ DWORD ReturnBufferSize,
1998   _Out_opt_ PDWORD RequiredSize);
1999 
2000 WINSETUPAPI
2001 BOOL
2002 WINAPI
2003 SetupGetMultiSzFieldA(
2004   _In_ PINFCONTEXT Context,
2005   _In_ DWORD FieldIndex,
2006   _Out_writes_opt_(ReturnBufferSize) PSTR ReturnBuffer,
2007   _In_ DWORD ReturnBufferSize,
2008   _Out_opt_ LPDWORD RequiredSize);
2009 
2010 WINSETUPAPI
2011 BOOL
2012 WINAPI
2013 SetupGetMultiSzFieldW(
2014   _In_ PINFCONTEXT Context,
2015   _In_ DWORD FieldIndex,
2016   _Out_writes_opt_(ReturnBufferSize) PWSTR ReturnBuffer,
2017   _In_ DWORD ReturnBufferSize,
2018   _Out_opt_ LPDWORD RequiredSize);
2019 
2020 WINSETUPAPI
2021 BOOL
2022 WINAPI
2023 SetupGetSourceFileLocationA(
2024   _In_ HINF InfHandle,
2025   _In_opt_ PINFCONTEXT InfContext,
2026   _In_opt_ PCSTR FileName,
2027   _Out_ PUINT SourceId,
2028   _Out_writes_opt_(ReturnBufferSize) PSTR ReturnBuffer,
2029   _In_ DWORD ReturnBufferSize,
2030   _Out_opt_ PDWORD RequiredSize);
2031 
2032 WINSETUPAPI
2033 BOOL
2034 WINAPI
2035 SetupGetSourceFileLocationW(
2036   _In_ HINF InfHandle,
2037   _In_opt_ PINFCONTEXT InfContext,
2038   _In_opt_ PCWSTR FileName,
2039   _Out_ PUINT SourceId,
2040   _Out_writes_opt_(ReturnBufferSize) PWSTR ReturnBuffer,
2041   _In_ DWORD ReturnBufferSize,
2042   _Out_opt_ PDWORD RequiredSize);
2043 
2044 WINSETUPAPI BOOL WINAPI SetupGetSourceFileSizeA(_In_ HINF, _In_opt_ PINFCONTEXT, _In_opt_ PCSTR, _In_opt_ PCSTR, _Out_ PDWORD, _In_ UINT);
2045 WINSETUPAPI BOOL WINAPI SetupGetSourceFileSizeW(_In_ HINF, _In_opt_ PINFCONTEXT, _In_opt_ PCWSTR, _In_opt_ PCWSTR, _Out_ PDWORD, _In_ UINT);
2046 
2047 WINSETUPAPI
2048 BOOL
2049 WINAPI
2050 SetupGetSourceInfoA(
2051   _In_ HINF InfHandle,
2052   _In_ UINT SourceId,
2053   _In_ UINT InfoDesired,
2054   _Out_writes_opt_(ReturnBufferSize) PSTR ReturnBuffer,
2055   _In_ DWORD ReturnBufferSize,
2056   _Out_opt_ PDWORD RequiredSize);
2057 
2058 WINSETUPAPI
2059 BOOL
2060 WINAPI
2061 SetupGetSourceInfoW(
2062   _In_ HINF InfHandle,
2063   _In_ UINT SourceId,
2064   _In_ UINT InfoDesired,
2065   _Out_writes_opt_(ReturnBufferSize) PWSTR ReturnBuffer,
2066   _In_ DWORD ReturnBufferSize,
2067   _Out_opt_ PDWORD RequiredSize);
2068 
2069 WINSETUPAPI
2070 BOOL
2071 WINAPI
2072 SetupGetStringFieldA(
2073   _In_ PINFCONTEXT Context,
2074   _In_ DWORD FieldIndex,
2075   _Out_writes_opt_(ReturnBufferSize) PSTR ReturnBuffer,
2076   _In_ DWORD ReturnBufferSize,
2077   _Out_opt_ PDWORD RequiredSize);
2078 
2079 WINSETUPAPI
2080 BOOL
2081 WINAPI
2082 SetupGetStringFieldW(
2083   _In_ PINFCONTEXT Context,
2084   _In_ DWORD FieldIndex,
2085   _Out_writes_opt_(ReturnBufferSize) PWSTR ReturnBuffer,
2086   _In_ DWORD ReturnBufferSize,
2087   _Out_opt_ PDWORD RequiredSize);
2088 
2089 WINSETUPAPI
2090 BOOL
2091 WINAPI
2092 SetupGetTargetPathA(
2093   _In_ HINF InfHandle,
2094   _In_opt_ PINFCONTEXT InfContext,
2095   _In_opt_ PCSTR Section,
2096   _Out_writes_opt_(ReturnBufferSize) PSTR ReturnBuffer,
2097   _In_ DWORD ReturnBufferSize,
2098   _Out_opt_ PDWORD RequiredSize);
2099 
2100 WINSETUPAPI
2101 BOOL
2102 WINAPI
2103 SetupGetTargetPathW(
2104   _In_ HINF InfHandle,
2105   _In_opt_ PINFCONTEXT InfContext,
2106   _In_opt_ PCWSTR Section,
2107   _Out_writes_opt_(ReturnBufferSize) PWSTR ReturnBuffer,
2108   _In_ DWORD ReturnBufferSize,
2109   _Out_opt_ PDWORD RequiredSize);
2110 
2111 WINSETUPAPI PVOID WINAPI SetupInitDefaultQueueCallback(_In_opt_ HWND);
2112 WINSETUPAPI PVOID WINAPI SetupInitDefaultQueueCallbackEx(_In_opt_ HWND, _In_opt_ HWND, _In_ UINT, _Reserved_ DWORD, _Reserved_ PVOID);
2113 WINSETUPAPI HSPFILELOG WINAPI SetupInitializeFileLogA(_In_opt_ PCSTR, _In_ DWORD);
2114 WINSETUPAPI HSPFILELOG WINAPI SetupInitializeFileLogW(_In_opt_ PCWSTR, _In_ DWORD);
2115 WINSETUPAPI BOOL WINAPI SetupInstallFileA(_In_opt_ HINF, _In_opt_ PINFCONTEXT, _In_opt_ PCSTR, _In_opt_ PCSTR, _In_opt_ PCSTR, _In_ DWORD, _In_opt_ PSP_FILE_CALLBACK_A, _In_opt_ PVOID);
2116 WINSETUPAPI BOOL WINAPI SetupInstallFileW(_In_opt_ HINF, _In_opt_ PINFCONTEXT, _In_opt_ PCWSTR, _In_opt_ PCWSTR, _In_opt_ PCWSTR, _In_ DWORD, _In_opt_ PSP_FILE_CALLBACK_W, _In_opt_ PVOID);
2117 WINSETUPAPI BOOL WINAPI SetupInstallFileExA(_In_opt_ HINF, _In_opt_ PINFCONTEXT, _In_opt_ PCSTR, _In_opt_ PCSTR, _In_opt_ PCSTR, _In_ DWORD, _In_opt_ PSP_FILE_CALLBACK_A, _In_opt_ PVOID, _Out_ PBOOL);
2118 WINSETUPAPI BOOL WINAPI SetupInstallFileExW(_In_opt_ HINF, _In_opt_ PINFCONTEXT, _In_opt_ PCWSTR, _In_opt_ PCWSTR, _In_opt_ PCWSTR, _In_ DWORD, _In_opt_ PSP_FILE_CALLBACK_W, _In_opt_ PVOID, _Out_ PBOOL);
2119 WINSETUPAPI BOOL WINAPI SetupInstallFilesFromInfSectionA(_In_ HINF, _In_opt_ HINF, _In_ HSPFILEQ, _In_ PCSTR, _In_opt_ PCSTR, _In_ UINT);
2120 WINSETUPAPI BOOL WINAPI SetupInstallFilesFromInfSectionW(_In_ HINF, _In_opt_ HINF, _In_ HSPFILEQ, _In_ PCWSTR, _In_opt_ PCWSTR, _In_ UINT);
2121 WINSETUPAPI BOOL WINAPI SetupInstallFromInfSectionA(_In_opt_ HWND, _In_ HINF, _In_ PCSTR, _In_ UINT, _In_opt_ HKEY, _In_opt_ PCSTR, _In_ UINT, _In_opt_ PSP_FILE_CALLBACK_A, _In_opt_ PVOID, _In_opt_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA);
2122 WINSETUPAPI BOOL WINAPI SetupInstallFromInfSectionW(_In_opt_ HWND, _In_ HINF, _In_ PCWSTR, _In_ UINT, _In_opt_ HKEY, _In_opt_ PCWSTR, _In_ UINT, _In_opt_ PSP_FILE_CALLBACK_W, _In_opt_ PVOID, _In_opt_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA);
2123 WINSETUPAPI BOOL WINAPI SetupInstallServicesFromInfSectionA(_In_ HINF, _In_ PCSTR, _In_ DWORD);
2124 WINSETUPAPI BOOL WINAPI SetupInstallServicesFromInfSectionW(_In_ HINF, _In_ PCWSTR, _In_ DWORD);
2125 WINSETUPAPI BOOL WINAPI SetupInstallServicesFromInfSectionExA(_In_ HINF, _In_ PCSTR, _In_ DWORD, _In_opt_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA, _Reserved_ PVOID, _Reserved_ PVOID);
2126 WINSETUPAPI BOOL WINAPI SetupInstallServicesFromInfSectionExW(_In_ HINF, _In_ PCWSTR, _In_ DWORD, _In_opt_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA, _Reserved_ PVOID, _Reserved_ PVOID);
2127 WINSETUPAPI BOOL WINAPI SetupIterateCabinetA(_In_ PCSTR, _Reserved_ DWORD, _In_ PSP_FILE_CALLBACK_A, _In_ PVOID);
2128 WINSETUPAPI BOOL WINAPI SetupIterateCabinetW(_In_ PCWSTR, _Reserved_ DWORD, _In_ PSP_FILE_CALLBACK_W, _In_ PVOID);
2129 WINSETUPAPI BOOL WINAPI SetupLogErrorA(_In_ LPCSTR, _In_ LogSeverity);
2130 WINSETUPAPI BOOL WINAPI SetupLogErrorW(_In_ LPCWSTR, _In_ LogSeverity);
2131 WINSETUPAPI BOOL WINAPI SetupLogFileA(_In_ HSPFILELOG, _In_opt_ PCSTR, _In_ PCSTR, _In_ PCSTR, _In_ DWORD, _In_opt_ PCSTR, _In_opt_ PCSTR, _In_opt_ PCSTR, _In_ DWORD);
2132 WINSETUPAPI BOOL WINAPI SetupLogFileW(_In_ HSPFILELOG, _In_opt_ PCWSTR, _In_ PCWSTR, _In_ PCWSTR, _In_ DWORD, _In_opt_ PCWSTR, _In_opt_ PCWSTR, _In_opt_ PCWSTR, _In_ DWORD);
2133 
2134 WINSETUPAPI
2135 BOOL
2136 WINAPI
2137 SetupOpenAppendInfFileA(
2138   _In_opt_ PCSTR FileName,
2139   _In_ HINF InfHandle,
2140   _Out_opt_ PUINT ErrorLine);
2141 
2142 WINSETUPAPI
2143 BOOL
2144 WINAPI
2145 SetupOpenAppendInfFileW(
2146   _In_opt_ PCWSTR FileName,
2147   _In_ HINF InfHandle,
2148   _Out_opt_ PUINT ErrorLine);
2149 
2150 WINSETUPAPI HSPFILEQ WINAPI SetupOpenFileQueue(VOID);
2151 
2152 WINSETUPAPI
2153 HINF
2154 WINAPI
2155 SetupOpenInfFileA(
2156   _In_ PCSTR FileName,
2157   _In_opt_ PCSTR InfClass,
2158   _In_ DWORD InfStyle,
2159   _Out_opt_ PUINT ErrorLine);
2160 
2161 WINSETUPAPI
2162 HINF
2163 WINAPI
2164 SetupOpenInfFileW(
2165   _In_ PCWSTR FileName,
2166   _In_opt_ PCWSTR InfClass,
2167   _In_ DWORD InfStyle,
2168   _Out_opt_ PUINT ErrorLine);
2169 
2170 WINSETUPAPI BOOL WINAPI SetupOpenLog(_In_ BOOL);
2171 WINSETUPAPI HINF WINAPI SetupOpenMasterInf(VOID);
2172 
2173 WINSETUPAPI
2174 UINT
2175 WINAPI
2176 SetupPromptForDiskA(
2177   _In_ HWND hwndParent,
2178   _In_opt_ PCSTR DialogTitle,
2179   _In_opt_ PCSTR DiskName,
2180   _In_opt_ PCSTR PathToSource,
2181   _In_ PCSTR FileSought,
2182   _In_opt_ PCSTR TagFile,
2183   _In_ DWORD DiskPromptStyle,
2184   _Out_writes_opt_(PathBufferSize) PSTR PathBuffer,
2185   _In_ DWORD PathBufferSize,
2186   _Out_opt_ PDWORD PathRequiredSize);
2187 
2188 WINSETUPAPI
2189 UINT
2190 WINAPI
2191 SetupPromptForDiskW(
2192   _In_ HWND hwndParent,
2193   _In_opt_ PCWSTR DialogTitle,
2194   _In_opt_ PCWSTR DiskName,
2195   _In_opt_ PCWSTR PathToSource,
2196   _In_ PCWSTR FileSought,
2197   _In_opt_ PCWSTR TagFile,
2198   _In_ DWORD DiskPromptStyle,
2199   _Out_writes_opt_(PathBufferSize) PWSTR PathBuffer,
2200   _In_ DWORD PathBufferSize,
2201   _Out_opt_ PDWORD PathRequiredSize);
2202 
2203 WINSETUPAPI INT WINAPI SetupPromptReboot(_In_opt_ HSPFILEQ, _In_opt_ HWND, _In_ BOOL);
2204 WINSETUPAPI BOOL WINAPI SetupQueryA(DWORD,PCSTR**,PUINT);
2205 WINSETUPAPI BOOL WINAPI SetupQueryW(DWORD,PCWSTR**,PUINT);
2206 
2207 WINSETUPAPI
2208 BOOL
2209 WINAPI
2210 SetupQueryDrivesInDiskSpaceListA(
2211   _In_ HDSKSPC DiskSpace,
2212   _Out_writes_opt_(ReturnBufferSize) PSTR ReturnBuffer,
2213   _In_ DWORD ReturnBufferSize,
2214   _Out_opt_ PDWORD RequiredSize);
2215 
2216 WINSETUPAPI
2217 BOOL
2218 WINAPI
2219 SetupQueryDrivesInDiskSpaceListW(
2220   _In_ HDSKSPC DiskSpace,
2221   _Out_writes_opt_(ReturnBufferSize) PWSTR ReturnBuffer,
2222   _In_ DWORD ReturnBufferSize,
2223   _Out_opt_ PDWORD RequiredSize);
2224 
2225 WINSETUPAPI
2226 BOOL
2227 WINAPI
2228 SetupQueryFileLogA(
2229   _In_ HSPFILELOG FileLogHandle,
2230   _In_opt_ PCSTR LogSectionName,
2231   _In_ PCSTR TargetFilename,
2232   _In_ SetupFileLogInfo DesiredInfo,
2233   _Out_writes_opt_(ReturnBufferSize) PSTR DataOut,
2234   _In_ DWORD ReturnBufferSize,
2235   _Out_opt_ PDWORD RequiredSize);
2236 
2237 WINSETUPAPI
2238 BOOL
2239 WINAPI
2240 SetupQueryFileLogW(
2241   _In_ HSPFILELOG FileLogHandle,
2242   _In_opt_ PCWSTR LogSectionName,
2243   _In_ PCWSTR TargetFilename,
2244   _In_ SetupFileLogInfo DesiredInfo,
2245   _Out_writes_opt_(ReturnBufferSize) PWSTR DataOut,
2246   _In_ DWORD ReturnBufferSize,
2247   _Out_opt_ PDWORD RequiredSize);
2248 
2249 WINSETUPAPI
2250 BOOL
2251 WINAPI
2252 SetupQueryInfFileInformationA(
2253   _In_ PSP_INF_INFORMATION InfInformation,
2254   _In_ UINT InfIndex,
2255   _Out_writes_opt_(ReturnBufferSize) PSTR ReturnBuffer,
2256   _In_ DWORD ReturnBufferSize,
2257   _Out_opt_ PDWORD RequiredSize);
2258 
2259 WINSETUPAPI
2260 BOOL
2261 WINAPI
2262 SetupQueryInfFileInformationW(
2263   _In_ PSP_INF_INFORMATION InfInformation,
2264   _In_ UINT InfIndex,
2265   _Out_writes_opt_(ReturnBufferSize) PWSTR ReturnBuffer,
2266   _In_ DWORD ReturnBufferSize,
2267   _Out_opt_ PDWORD RequiredSize);
2268 
2269 WINSETUPAPI
2270 BOOL
2271 WINAPI
2272 SetupQueryInfOriginalFileInformationA(
2273   _In_ PSP_INF_INFORMATION InfInformation,
2274   _In_ UINT InfIndex,
2275   _In_opt_ PSP_ALTPLATFORM_INFO AlternatePlatformInfo,
2276   _Out_ PSP_ORIGINAL_FILE_INFO_A OriginalFileInfo);
2277 
2278 WINSETUPAPI
2279 BOOL
2280 WINAPI
2281 SetupQueryInfOriginalFileInformationW(
2282   _In_ PSP_INF_INFORMATION InfInformation,
2283   _In_ UINT InfIndex,
2284   _In_opt_ PSP_ALTPLATFORM_INFO AlternatePlatformInfo,
2285   _Out_ PSP_ORIGINAL_FILE_INFO_W OriginalFileInfo);
2286 
2287 WINSETUPAPI
2288 BOOL
2289 WINAPI
2290 SetupQueryInfVersionInformationA(
2291   _In_ PSP_INF_INFORMATION InfInformation,
2292   _In_ UINT InfIndex,
2293   _In_opt_ PCSTR Key,
2294   _Out_writes_opt_(ReturnBufferSize) PSTR ReturnBuffer,
2295   _In_ DWORD ReturnBufferSize,
2296   _Out_opt_ PDWORD RequiredSize);
2297 
2298 WINSETUPAPI
2299 BOOL
2300 WINAPI
2301 SetupQueryInfVersionInformationW(
2302   _In_ PSP_INF_INFORMATION InfInformation,
2303   _In_ UINT InfIndex,
2304   _In_opt_ PCWSTR Key,
2305   _Out_writes_opt_(ReturnBufferSize) PWSTR ReturnBuffer,
2306   _In_ DWORD ReturnBufferSize,
2307   _Out_opt_ PDWORD RequiredSize);
2308 
2309 WINSETUPAPI BOOL WINAPI SetupQuerySpaceRequiredOnDriveA(_In_ HDSKSPC, _In_ PCSTR, _Out_ LONGLONG*, _Reserved_ PVOID, _Reserved_ UINT);
2310 WINSETUPAPI BOOL WINAPI SetupQuerySpaceRequiredOnDriveW(_In_ HDSKSPC, _In_ PCWSTR, _Out_ LONGLONG*, _Reserved_ PVOID, _Reserved_ UINT);
2311 WINSETUPAPI BOOL WINAPI SetupQueueCopyA(_In_ HSPFILEQ, _In_opt_ PCSTR, _In_opt_ PCSTR, _In_ PCSTR, _In_opt_ PCSTR, _In_opt_ PCSTR, _In_ PCSTR, _In_opt_ PCSTR, _In_ DWORD);
2312 WINSETUPAPI BOOL WINAPI SetupQueueCopyW(_In_ HSPFILEQ, _In_opt_ PCWSTR, _In_opt_ PCWSTR, _In_ PCWSTR, _In_opt_ PCWSTR, _In_opt_ PCWSTR, _In_ PCWSTR, _In_opt_ PCWSTR, _In_ DWORD);
2313 WINSETUPAPI BOOL WINAPI SetupQueueCopyIndirectA(_In_ PSP_FILE_COPY_PARAMS_A);
2314 WINSETUPAPI BOOL WINAPI SetupQueueCopyIndirectW(_In_ PSP_FILE_COPY_PARAMS_W);
2315 WINSETUPAPI BOOL WINAPI SetupQueueCopySectionA(_In_ HSPFILEQ, _In_opt_ PCSTR, _In_ HINF, _In_opt_ HINF, _In_ PCSTR, _In_ DWORD);
2316 WINSETUPAPI BOOL WINAPI SetupQueueCopySectionW(_In_ HSPFILEQ, _In_opt_ PCWSTR, _In_ HINF, _In_opt_ HINF, _In_ PCWSTR, _In_ DWORD);
2317 WINSETUPAPI BOOL WINAPI SetupQueueDefaultCopyA(_In_ HSPFILEQ, _In_ HINF, _In_opt_ PCSTR, _In_ PCSTR, _In_opt_ PCSTR, _In_ DWORD);
2318 WINSETUPAPI BOOL WINAPI SetupQueueDefaultCopyW(_In_ HSPFILEQ, _In_ HINF, _In_opt_ PCWSTR, _In_ PCWSTR, _In_opt_ PCWSTR, _In_ DWORD);
2319 WINSETUPAPI BOOL WINAPI SetupQueueDeleteA(_In_ HSPFILEQ, _In_ PCSTR, _In_opt_ PCSTR);
2320 WINSETUPAPI BOOL WINAPI SetupQueueDeleteW(_In_ HSPFILEQ, _In_ PCWSTR, _In_opt_ PCWSTR);
2321 WINSETUPAPI BOOL WINAPI SetupQueueDeleteSectionA(_In_ HSPFILEQ, _In_ HINF, _In_opt_ HINF, _In_ PCSTR);
2322 WINSETUPAPI BOOL WINAPI SetupQueueDeleteSectionW(_In_ HSPFILEQ, _In_ HINF, _In_opt_ HINF, _In_ PCWSTR);
2323 WINSETUPAPI BOOL WINAPI SetupQueueRenameA(_In_ HSPFILEQ, _In_ PCSTR, _In_opt_ PCSTR, _In_opt_ PCSTR, _In_ PCSTR);
2324 WINSETUPAPI BOOL WINAPI SetupQueueRenameW(_In_ HSPFILEQ, _In_ PCWSTR, _In_opt_ PCWSTR, _In_opt_ PCWSTR, _In_ PCWSTR);
2325 WINSETUPAPI BOOL WINAPI SetupQueueRenameSectionA(_In_ HSPFILEQ, _In_ HINF, _In_opt_ HINF, _In_ PCSTR);
2326 WINSETUPAPI BOOL WINAPI SetupQueueRenameSectionW(_In_ HSPFILEQ, _In_ HINF, _In_opt_ HINF, _In_ PCWSTR);
2327 WINSETUPAPI BOOL WINAPI SetupRemoveFileLogEntryA(_In_ HSPFILELOG, _In_opt_ PCSTR, _In_opt_ PCSTR);
2328 WINSETUPAPI BOOL WINAPI SetupRemoveFileLogEntryW(_In_ HSPFILELOG, _In_opt_ PCWSTR, _In_opt_ PCWSTR);
2329 WINSETUPAPI BOOL WINAPI SetupRemoveFromDiskSpaceListA(_In_ HDSKSPC, _In_ PCSTR, _In_ UINT, _Reserved_ PVOID, _Reserved_ UINT);
2330 WINSETUPAPI BOOL WINAPI SetupRemoveFromDiskSpaceListW(_In_ HDSKSPC, _In_ PCWSTR, _In_ UINT, _Reserved_ PVOID, _Reserved_ UINT);
2331 WINSETUPAPI BOOL WINAPI SetupRemoveFromSourceListA(_In_ DWORD, _In_ PCSTR);
2332 WINSETUPAPI BOOL WINAPI SetupRemoveFromSourceListW(_In_ DWORD, _In_ PCWSTR);
2333 WINSETUPAPI BOOL WINAPI SetupRemoveInstallSectionFromDiskSpaceListA(_In_ HDSKSPC, _In_ HINF, _In_opt_ HINF, _In_ PCSTR, _Reserved_ PVOID, _Reserved_ UINT);
2334 WINSETUPAPI BOOL WINAPI SetupRemoveInstallSectionFromDiskSpaceListW(_In_ HDSKSPC, _In_ HINF, _In_opt_ HINF, _In_ PCWSTR, _Reserved_ PVOID, _Reserved_ UINT);
2335 WINSETUPAPI BOOL WINAPI SetupRemoveSectionFromDiskSpaceListA(_In_ HDSKSPC, _In_ HINF, _In_opt_ HINF, _In_ PCSTR, _In_ UINT, _Reserved_ PVOID, _Reserved_ UINT);
2336 WINSETUPAPI BOOL WINAPI SetupRemoveSectionFromDiskSpaceListW(_In_ HDSKSPC, _In_ HINF, _In_opt_ HINF, _In_ PCWSTR, _In_ UINT, _Reserved_ PVOID, _Reserved_ UINT);
2337 WINSETUPAPI UINT WINAPI SetupRenameErrorA(_In_ HWND, _In_opt_ PCSTR, _In_ PCSTR, _In_ PCSTR, _In_ UINT, _In_ DWORD);
2338 WINSETUPAPI UINT WINAPI SetupRenameErrorW(_In_ HWND, _In_opt_ PCWSTR, _In_ PCWSTR, _In_ PCWSTR, _In_ UINT, _In_ DWORD);
2339 WINSETUPAPI BOOL WINAPI SetupScanFileQueueA(_In_ HSPFILEQ, _In_ DWORD, _In_opt_ HWND, _In_opt_ PSP_FILE_CALLBACK_A, _In_opt_ PVOID, _Out_ PDWORD);
2340 WINSETUPAPI BOOL WINAPI SetupScanFileQueueW(_In_ HSPFILEQ, _In_ DWORD, _In_opt_ HWND, _In_opt_ PSP_FILE_CALLBACK_W, _In_opt_ PVOID, _Out_ PDWORD);
2341 WINSETUPAPI BOOL WINAPI SetupSetDirectoryIdA(_In_ HINF, _In_ DWORD, _In_opt_ PCSTR);
2342 WINSETUPAPI BOOL WINAPI SetupSetDirectoryIdW(_In_ HINF, _In_ DWORD, _In_opt_ PCWSTR);
2343 WINSETUPAPI BOOL WINAPI SetupSetDirectoryIdExA(_In_ HINF, _In_ DWORD, _In_opt_ PCSTR, _In_ DWORD, _Reserved_ DWORD, _Reserved_ PVOID);
2344 WINSETUPAPI BOOL WINAPI SetupSetDirectoryIdExW(_In_ HINF, _In_ DWORD, _In_opt_ PCWSTR, _In_ DWORD, _Reserved_ DWORD, _Reserved_ PVOID);
2345 WINSETUPAPI BOOL WINAPI SetupSetFileQueueAlternatePlatformA(_In_ HSPFILEQ, _In_opt_ PSP_ALTPLATFORM_INFO, _In_opt_ PCSTR);
2346 WINSETUPAPI BOOL WINAPI SetupSetFileQueueAlternatePlatformW(_In_ HSPFILEQ, _In_opt_ PSP_ALTPLATFORM_INFO, _In_opt_ PCWSTR);
2347 WINSETUPAPI BOOL WINAPI SetupSetNonInteractiveMode(_In_ BOOL);
2348 WINSETUPAPI BOOL WINAPI SetupSetPlatformPathOverrideA(_In_opt_ PCSTR);
2349 WINSETUPAPI BOOL WINAPI SetupSetPlatformPathOverrideW(_In_opt_ PCWSTR);
2350 
2351 WINSETUPAPI
2352 BOOL
2353 WINAPI
2354 SetupSetSourceListA(
2355   _In_ DWORD Flags,
2356   _In_reads_(SourceCount) PCSTR *SourceList,
2357   _In_ UINT SourceCount);
2358 
2359 WINSETUPAPI
2360 BOOL
2361 WINAPI
2362 SetupSetSourceListW(
2363   _In_ DWORD Flags,
2364   _In_reads_(SourceCount) PCWSTR *SourceList,
2365   _In_ UINT SourceCount);
2366 
2367 WINSETUPAPI VOID WINAPI SetupTermDefaultQueueCallback(_In_ PVOID);
2368 WINSETUPAPI BOOL WINAPI SetupTerminateFileLog(_In_ HSPFILELOG);
2369 
2370 WINSETUPAPI
2371 BOOL
2372 WINAPI
2373 SetupUninstallOEMInfA(
2374   _In_ PCSTR InfFileName,
2375   _In_ DWORD Flags,
2376   _In_ PVOID Reserved);
2377 
2378 WINSETUPAPI
2379 BOOL
2380 WINAPI
2381 SetupUninstallOEMInfW(
2382   _In_ PCWSTR InfFileName,
2383   _In_ DWORD Flags,
2384   _In_ PVOID Reserved);
2385 
2386 WINSETUPAPI DWORD WINAPI StampFileSecurity(PCWSTR, PSECURITY_DESCRIPTOR);
2387 
2388 
2389 WINSETUPAPI DWORD WINAPI pSetupCaptureAndConvertAnsiArg(PCSTR, PWSTR*);
2390 WINSETUPAPI VOID WINAPI pSetupCenterWindowRelativeToParent(HWND);
2391 WINSETUPAPI BOOL WINAPI pSetupConcatenatePaths(LPWSTR, LPCWSTR, DWORD, LPDWORD);
2392 WINSETUPAPI PWSTR WINAPI pSetupDuplicateString(PCWSTR);
2393 WINSETUPAPI BOOL WINAPI pSetupEnablePrivilege(PCWSTR, BOOL);
2394 WINSETUPAPI PWSTR WINAPI pSetupGetFileTitle(PCWSTR);
2395 WINSETUPAPI BOOL WINAPI pSetupGetVersionInfoFromImage(LPWSTR, PULARGE_INTEGER, LPWORD);
2396 WINSETUPAPI DWORD WINAPI pSetupGuidFromString(PCWSTR, LPGUID);
2397 WINSETUPAPI BOOL WINAPI pSetupIsGuidNull(LPGUID);
2398 WINSETUPAPI BOOL WINAPI pSetupIsUserAdmin(VOID);
2399 WINSETUPAPI PWSTR WINAPI pSetupMultiByteToUnicode(PCSTR, UINT);
2400 WINSETUPAPI DWORD WINAPI pSetupOpenAndMapForRead(PCWSTR, PDWORD, PHANDLE, PHANDLE, PVOID*);
2401 WINSETUPAPI DWORD WINAPI pSetupStringFromGuid(LPGUID, PWSTR, DWORD);
2402 
2403 
2404 WINSETUPAPI DWORD  WINAPI pSetupStringTableAddString(HSTRING_TABLE, LPWSTR, DWORD);
2405 WINSETUPAPI DWORD  WINAPI pSetupStringTableAddStringEx(HSTRING_TABLE, LPWSTR, DWORD, LPVOID, DWORD);
2406 WINSETUPAPI VOID   WINAPI pSetupStringTableDestroy(HSTRING_TABLE);
2407 WINSETUPAPI HSTRING_TABLE WINAPI pSetupStringTableDuplicate(HSTRING_TABLE);
2408 WINSETUPAPI BOOL   WINAPI pSetupStringTableGetExtraData(HSTRING_TABLE, DWORD, LPVOID, DWORD);
2409 WINSETUPAPI HSTRING_TABLE WINAPI pSetupStringTableInitialize(VOID);
2410 WINSETUPAPI HSTRING_TABLE WINAPI pSetupStringTableInitializeEx(DWORD, DWORD);
2411 WINSETUPAPI DWORD  WINAPI pSetupStringTableLookUpString(HSTRING_TABLE, LPWSTR, DWORD);
2412 WINSETUPAPI DWORD  WINAPI pSetupStringTableLookUpStringEx(HSTRING_TABLE, LPWSTR, DWORD, LPVOID, DWORD);
2413 WINSETUPAPI BOOL   WINAPI pSetupStringTableSetExtraData(HSTRING_TABLE, DWORD, LPVOID, DWORD);
2414 WINSETUPAPI LPWSTR WINAPI pSetupStringTableStringFromId(HSTRING_TABLE, DWORD);
2415 WINSETUPAPI BOOL   WINAPI pSetupStringTableStringFromIdEx(HSTRING_TABLE, DWORD, LPWSTR, LPDWORD);
2416 
2417 WINSETUPAPI PSTR WINAPI pSetupUnicodeToMultiByte(PCWSTR lpUnicodeStr, UINT uCodePage);
2418 WINSETUPAPI BOOL WINAPI pSetupUnmapAndCloseFile(HANDLE, HANDLE, PVOID);
2419 
2420 
2421 WINSETUPAPI DWORD WINAPI TakeOwnershipOfFile(PCWSTR);
2422 WINSETUPAPI PSTR WINAPI UnicodeToMultiByte(PCWSTR lpUnicodeStr, UINT uCodePage);
2423 
2424 
2425 /* for backward compatability */
2426 #define SetupDiCreateInterfaceDeviceW	SetupDiCreateDeviceInterfaceW
2427 #define SetupDiCreateInterfaceDeviceRegKeyW	SetupDiCreateDeviceInterfaceRegKeyW
2428 #define SetupDiOpenInterfaceDeviceW	SetupDiOpenDeviceInterfaceW
2429 #define SetupDiGetInterfaceDeviceDetailW	SetupDiGetDeviceInterfaceDetailW
2430 #define SetupDiCreateInterfaceDeviceA	SetupDiCreateDeviceInterfaceA
2431 #define SetupDiCreateInterfaceDeviceRegKeyA	SetupDiCreateDeviceInterfaceRegKeyA
2432 #define SetupDiOpenInterfaceDeviceA	SetupDiOpenDeviceInterfaceA
2433 #define SetupDiGetInterfaceDeviceDetailA	SetupDiGetDeviceInterfaceDetailA
2434 
2435 #ifdef UNICODE
2436 #define PSP_FILE_CALLBACK PSP_FILE_CALLBACK_W
2437 #define InstallHinfSection InstallHinfSectionW
2438 #define SetupAddInstallSectionToDiskSpaceList	SetupAddInstallSectionToDiskSpaceListW
2439 #define SetupAddSectionToDiskSpaceList	SetupAddSectionToDiskSpaceListW
2440 #define SetupAddToDiskSpaceList	SetupAddToDiskSpaceListW
2441 #define SetupAddToSourceList	SetupAddToSourceListW
2442 #define SetupAdjustDiskSpaceList	SetupAdjustDiskSpaceListW
2443 #define SetupBackupError	SetupBackupErrorW
2444 #define SetupCommitFileQueue	SetupCommitFileQueueW
2445 #define SetupCopyError	SetupCopyErrorW
2446 #define SetupCopyOEMInf	SetupCopyOEMInfW
2447 #define SetupCreateDiskSpaceList	SetupCreateDiskSpaceListW
2448 #define SetupDecompressOrCopyFile	SetupDecompressOrCopyFileW
2449 #define SetupDefaultQueueCallback	SetupDefaultQueueCallbackW
2450 #define SetupDeleteError	SetupDeleteErrorW
2451 #define SetupDiBuildClassInfoListEx	SetupDiBuildClassInfoListExW
2452 #define SetupDiClassGuidsFromNameEx	SetupDiClassGuidsFromNameExW
2453 #define SetupDiClassGuidsFromName	SetupDiClassGuidsFromNameW
2454 #define SetupDiClassNameFromGuidEx	SetupDiClassNameFromGuidExW
2455 #define SetupDiClassNameFromGuid	SetupDiClassNameFromGuidW
2456 #define SetupDiCreateDeviceInfoListEx	SetupDiCreateDeviceInfoListExW
2457 #define SetupDiCreateDeviceInfo	SetupDiCreateDeviceInfoW
2458 #define SetupDiCreateDeviceInterfaceRegKey	SetupDiCreateDeviceInterfaceRegKeyW
2459 #define SetupDiCreateInterfaceDeviceRegKey	SetupDiCreateDeviceInterfaceRegKeyW
2460 #define SetupDiCreateDeviceInterface	SetupDiCreateDeviceInterfaceW
2461 #define SetupDiCreateInterfaceDevice	SetupDiCreateDeviceInterfaceW
2462 #define SetupDiCreateDevRegKey	SetupDiCreateDevRegKeyW
2463 #define SetupDiEnumDriverInfo	SetupDiEnumDriverInfoW
2464 #define SetupDiGetActualSectionToInstall	SetupDiGetActualSectionToInstallW
2465 #define SetupDiGetActualSectionToInstallEx	SetupDiGetActualSectionToInstallExW
2466 #define SetupDiGetClassDescriptionEx	SetupDiGetClassDescriptionExW
2467 #define SetupDiGetClassDescription	SetupDiGetClassDescriptionW
2468 #define SetupDiGetClassDevPropertySheets	SetupDiGetClassDevPropertySheetsW
2469 #define SetupDiGetClassDevsEx	SetupDiGetClassDevsExW
2470 #define SetupDiGetClassDevs	SetupDiGetClassDevsW
2471 #define SetupDiGetClassImageListEx	SetupDiGetClassImageListExW
2472 #define SetupDiGetClassInstallParams	SetupDiGetClassInstallParamsW
2473 #define SetupDiGetClassRegistryProperty	SetupDiGetClassRegistryPropertyW
2474 #define SetupDiGetDeviceInfoListDetail	SetupDiGetDeviceInfoListDetailW
2475 #define SetupDiGetDeviceInstallParams	SetupDiGetDeviceInstallParamsW
2476 #define SetupDiGetDeviceInstanceId	SetupDiGetDeviceInstanceIdW
2477 #define SetupDiGetDeviceInterfaceDetail	SetupDiGetDeviceInterfaceDetailW
2478 #define SetupDiGetInterfaceDeviceDetail	SetupDiGetDeviceInterfaceDetailW
2479 #define SetupDiGetDeviceRegistryProperty	SetupDiGetDeviceRegistryPropertyW
2480 #define SetupDiGetDriverInfoDetail	SetupDiGetDriverInfoDetailW
2481 #define SetupDiGetDriverInstallParams	SetupDiGetDriverInstallParamsW
2482 #define SetupDiGetHwProfileFriendlyNameEx	SetupDiGetHwProfileFriendlyNameExW
2483 #define SetupDiGetHwProfileFriendlyName	SetupDiGetHwProfileFriendlyNameW
2484 #define SetupDiGetHwProfileListEx	SetupDiGetHwProfileListExW
2485 #define SetupDiGetINFClass	SetupDiGetINFClassW
2486 #define SetupDiGetSelectedDriver	SetupDiGetSelectedDriverW
2487 #define SetupDiInstallClassEx	SetupDiInstallClassExW
2488 #define SetupDiInstallClass	SetupDiInstallClassW
2489 #define SetupDiOpenClassRegKeyEx	SetupDiOpenClassRegKeyExW
2490 #define SetupDiOpenDeviceInfo	SetupDiOpenDeviceInfoW
2491 #define SetupDiOpenDeviceInterface	SetupDiOpenDeviceInterfaceW
2492 #define SetupDiOpenInterfaceDevice	SetupDiOpenDeviceInterfaceW
2493 #define SetupDiSetClassInstallParams	SetupDiSetClassInstallParamsW
2494 #define SetupDiSetClassRegistryProperty	SetupDiSetClassRegistryPropertyW
2495 #define SetupDiSetDeviceInstallParams	SetupDiSetDeviceInstallParamsW
2496 #define SetupDiSetDeviceRegistryProperty	SetupDiSetDeviceRegistryPropertyW
2497 #define SetupDiSetDriverInstallParams	SetupDiSetDriverInstallParamsW
2498 #define SetupDiSetSelectedDriver	SetupDiSetSelectedDriverW
2499 #define SetupDuplicateDiskSpaceList	SetupDuplicateDiskSpaceListW
2500 #define SetupFindFirstLine	SetupFindFirstLineW
2501 #define SetupFindNextMatchLine	SetupFindNextMatchLineW
2502 #define SetupFreeSourceList	SetupFreeSourceListW
2503 #define SetupGetBackupInformation	SetupGetBackupInformationW
2504 #define SetupGetFileCompressionInfo	SetupGetFileCompressionInfoW
2505 #define SetupGetFileCompressionInfoEx	SetupGetFileCompressionInfoExW
2506 #define SetupGetInfFileList	SetupGetInfFileListW
2507 #define SetupGetInfInformation	SetupGetInfInformationW
2508 #define SetupGetLineByIndex	SetupGetLineByIndexW
2509 #define SetupGetLineCount	SetupGetLineCountW
2510 #define SetupGetLineText	SetupGetLineTextW
2511 #define SetupGetMultiSzField	SetupGetMultiSzFieldW
2512 #define SetupGetSourceFileLocation	SetupGetSourceFileLocationW
2513 #define SetupGetSourceFileSize	SetupGetSourceFileSizeW
2514 #define SetupGetSourceInfo	SetupGetSourceInfoW
2515 #define SetupGetStringField	SetupGetStringFieldW
2516 #define SetupGetTargetPath	SetupGetTargetPathW
2517 #define SetupInitializeFileLog	SetupInitializeFileLogW
2518 #define SetupInstallFileEx	SetupInstallFileExW
2519 #define SetupInstallFilesFromInfSection	SetupInstallFilesFromInfSectionW
2520 #define SetupInstallFile	SetupInstallFileW
2521 #define SetupInstallFromInfSection	SetupInstallFromInfSectionW
2522 #define SetupInstallServicesFromInfSectionEx	SetupInstallServicesFromInfSectionExW
2523 #define SetupInstallServicesFromInfSection	SetupInstallServicesFromInfSectionW
2524 #define SetupIterateCabinet	SetupIterateCabinetW
2525 #define SetupLogError	SetupLogErrorW
2526 #define SetupLogFile	SetupLogFileW
2527 #define SetupOpenAppendInfFile	SetupOpenAppendInfFileW
2528 #define SetupOpenInfFile	SetupOpenInfFileW
2529 #define SetupPromptForDisk	SetupPromptForDiskW
2530 #define SetupQueryDrivesInDiskSpaceList	SetupQueryDrivesInDiskSpaceListW
2531 #define SetupQueryFileLog	SetupQueryFileLogW
2532 #define SetupQueryInfFileInformation	SetupQueryInfFileInformationW
2533 #define SetupQueryInfOriginalFileInformation	SetupQueryInfOriginalFileInformationW
2534 #define SetupQueryInfVersionInformation	SetupQueryInfVersionInformationW
2535 #define SetupQuerySourceList	SetupQuerySourceListW
2536 #define SetupQuerySpaceRequiredOnDrive	SetupQuerySpaceRequiredOnDriveW
2537 #define SetupQueueCopyIndirect	SetupQueueCopyIndirectW
2538 #define SetupQueueCopySection	SetupQueueCopySectionW
2539 #define SetupQueueCopy	SetupQueueCopyW
2540 #define SetupQueueDefaultCopy	SetupQueueDefaultCopyW
2541 #define SetupQueueDeleteSection	SetupQueueDeleteSectionW
2542 #define SetupQueueDelete	SetupQueueDeleteW
2543 #define SetupQueueRenameSection	SetupQueueRenameSectionW
2544 #define SetupQueueRename	SetupQueueRenameW
2545 #define SetupRemoveFileLogEntry	SetupRemoveFileLogEntryW
2546 #define SetupRemoveFromDiskSpaceList	SetupRemoveFromDiskSpaceListW
2547 #define SetupRemoveFromSourceList	SetupRemoveFromSourceListW
2548 #define SetupRemoveInstallSectionFromDiskSpaceList	SetupRemoveInstallSectionFromDiskSpaceListW
2549 #define SetupRemoveSectionFromDiskSpaceList	SetupRemoveSectionFromDiskSpaceListW
2550 #define SetupRenameError	SetupRenameErrorW
2551 #define SetupScanFileQueue	SetupScanFileQueueW
2552 #define SetupSetDirectoryIdEx	SetupSetDirectoryIdExW
2553 #define SetupSetDirectoryId	SetupSetDirectoryIdW
2554 #define SetupSetFileQueueAlternatePlatform	SetupSetFileQueueAlternatePlatformW
2555 #define SetupSetPlatformPathOverride	SetupSetPlatformPathOverrideW
2556 #define SetupSetSourceList	SetupSetSourceListW
2557 #define SetupUninstallOEMInf    SetupUninstallOEMInfW
2558 #else
2559 #define PSP_FILE_CALLBACK PSP_FILE_CALLBACK_A
2560 #define InstallHinfSection InstallHinfSectionA
2561 #define SetupAddInstallSectionToDiskSpaceList	SetupAddInstallSectionToDiskSpaceListA
2562 #define SetupAddSectionToDiskSpaceList	SetupAddSectionToDiskSpaceListA
2563 #define SetupAddToDiskSpaceList	SetupAddToDiskSpaceListA
2564 #define SetupAddToSourceList	SetupAddToSourceListA
2565 #define SetupAdjustDiskSpaceList	SetupAdjustDiskSpaceListA
2566 #define SetupBackupError	SetupBackupErrorA
2567 #define SetupCommitFileQueue	SetupCommitFileQueueA
2568 #define SetupCopyError	SetupCopyErrorA
2569 #define SetupCopyOEMInf	SetupCopyOEMInfA
2570 #define SetupCreateDiskSpaceList	SetupCreateDiskSpaceListA
2571 #define SetupDecompressOrCopyFile	SetupDecompressOrCopyFileA
2572 #define SetupDefaultQueueCallback	SetupDefaultQueueCallbackA
2573 #define SetupDeleteError	SetupDeleteErrorA
2574 #define SetupDiBuildClassInfoListEx	SetupDiBuildClassInfoListExA
2575 #define SetupDiClassGuidsFromName	SetupDiClassGuidsFromNameA
2576 #define SetupDiClassGuidsFromNameEx	SetupDiClassGuidsFromNameExA
2577 #define SetupDiClassNameFromGuid	SetupDiClassNameFromGuidA
2578 #define SetupDiClassNameFromGuidEx	SetupDiClassNameFromGuidExA
2579 #define SetupDiCreateDeviceInfo	SetupDiCreateDeviceInfoA
2580 #define SetupDiCreateDeviceInfoListEx	SetupDiCreateDeviceInfoListExA
2581 #define SetupDiCreateDeviceInterface	SetupDiCreateDeviceInterfaceA
2582 #define SetupDiCreateInterfaceDevice	SetupDiCreateDeviceInterfaceA
2583 #define SetupDiCreateDeviceInterfaceRegKey	SetupDiCreateDeviceInterfaceRegKeyA
2584 #define SetupDiCreateInterfaceDeviceRegKey	SetupDiCreateDeviceInterfaceRegKeyA
2585 #define SetupDiCreateDevRegKey	SetupDiCreateDevRegKeyA
2586 #define SetupDiDeleteInterfaceDeviceData	SetupDiDeleteDeviceInterfaceData
2587 #define SetupDiEnumDriverInfo	SetupDiEnumDriverInfoA
2588 #define SetupDiGetActualSectionToInstall	SetupDiGetActualSectionToInstallA
2589 #define SetupDiGetActualSectionToInstallEx	SetupDiGetActualSectionToInstallExA
2590 #define SetupDiGetClassDescription	SetupDiGetClassDescriptionA
2591 #define SetupDiGetClassDescriptionEx	SetupDiGetClassDescriptionExA
2592 #define SetupDiGetClassDevPropertySheets	SetupDiGetClassDevPropertySheetsA
2593 #define SetupDiGetClassDevs	SetupDiGetClassDevsA
2594 #define SetupDiGetClassDevsEx	SetupDiGetClassDevsExA
2595 #define SetupDiGetClassImageListEx	SetupDiGetClassImageListExA
2596 #define SetupDiGetClassInstallParams	SetupDiGetClassInstallParamsA
2597 #define SetupDiGetClassRegistryProperty	SetupDiGetClassRegistryPropertyA
2598 #define SetupDiGetDeviceInfoListDetail	SetupDiGetDeviceInfoListDetailA
2599 #define SetupDiGetDeviceInstallParams	SetupDiGetDeviceInstallParamsA
2600 #define SetupDiGetDeviceInstanceId	SetupDiGetDeviceInstanceIdA
2601 #define SetupDiGetDeviceInterfaceDetail	SetupDiGetDeviceInterfaceDetailA
2602 #define SetupDiGetInterfaceDeviceDetail	SetupDiGetDeviceInterfaceDetailA
2603 #define SetupDiGetDeviceRegistryProperty	SetupDiGetDeviceRegistryPropertyA
2604 #define SetupDiGetDriverInfoDetail	SetupDiGetDriverInfoDetailA
2605 #define SetupDiGetDriverInstallParams	SetupDiGetDriverInstallParamsA
2606 #define SetupDiGetHwProfileFriendlyName	SetupDiGetHwProfileFriendlyNameA
2607 #define SetupDiGetHwProfileFriendlyNameEx	SetupDiGetHwProfileFriendlyNameExA
2608 #define SetupDiGetHwProfileListEx	SetupDiGetHwProfileListExA
2609 #define SetupDiGetINFClass	SetupDiGetINFClassA
2610 #define SetupDiGetSelectedDriver	SetupDiGetSelectedDriverA
2611 #define SetupDiInstallClass	SetupDiInstallClassA
2612 #define SetupDiInstallClassEx	SetupDiInstallClassExA
2613 #define SetupDiOpenClassRegKeyEx	SetupDiOpenClassRegKeyExA
2614 #define SetupDiOpenDeviceInfo	SetupDiOpenDeviceInfoA
2615 #define SetupDiOpenDeviceInterface	SetupDiOpenDeviceInterfaceA
2616 #define SetupDiOpenInterfaceDevice	SetupDiOpenDeviceInterfaceA
2617 #define SetupDiSetClassInstallParams	SetupDiSetClassInstallParamsA
2618 #define SetupDiSetClassRegistryProperty	SetupDiSetClassRegistryPropertyA
2619 #define SetupDiSetDeviceInstallParams	SetupDiSetDeviceInstallParamsA
2620 #define SetupDiSetDeviceRegistryProperty	SetupDiSetDeviceRegistryPropertyA
2621 #define SetupDiSetDriverInstallParams	SetupDiSetDriverInstallParamsA
2622 #define SetupDiSetSelectedDriver	SetupDiSetSelectedDriverA
2623 #define SetupDuplicateDiskSpaceList	SetupDuplicateDiskSpaceListA
2624 #define SetupFindFirstLine	SetupFindFirstLineA
2625 #define SetupFindNextMatchLine	SetupFindNextMatchLineA
2626 #define SetupFreeSourceList	SetupFreeSourceListA
2627 #define SetupGetBackupInformation	SetupGetBackupInformationA
2628 #define SetupGetFileCompressionInfo	SetupGetFileCompressionInfoA
2629 #define SetupGetFileCompressionInfoEx	SetupGetFileCompressionInfoExA
2630 #define SetupGetInfFileList	SetupGetInfFileListA
2631 #define SetupGetInfInformation	SetupGetInfInformationA
2632 #define SetupGetLineByIndex	SetupGetLineByIndexA
2633 #define SetupGetLineCount	SetupGetLineCountA
2634 #define SetupGetLineText	SetupGetLineTextA
2635 #define SetupGetMultiSzField	SetupGetMultiSzFieldA
2636 #define SetupGetSourceFileLocation	SetupGetSourceFileLocationA
2637 #define SetupGetSourceFileSize	SetupGetSourceFileSizeA
2638 #define SetupGetSourceInfo	SetupGetSourceInfoA
2639 #define SetupGetStringField	SetupGetStringFieldA
2640 #define SetupGetTargetPath	SetupGetTargetPathA
2641 #define SetupInitializeFileLog	SetupInitializeFileLogA
2642 #define SetupInstallFile	SetupInstallFileA
2643 #define SetupInstallFileEx	SetupInstallFileExA
2644 #define SetupInstallFilesFromInfSection	SetupInstallFilesFromInfSectionA
2645 #define SetupInstallFromInfSection	SetupInstallFromInfSectionA
2646 #define SetupInstallServicesFromInfSection	SetupInstallServicesFromInfSectionA
2647 #define SetupInstallServicesFromInfSectionEx	SetupInstallServicesFromInfSectionExA
2648 #define SetupIterateCabinet	SetupIterateCabinetA
2649 #define SetupLogError	SetupLogErrorA
2650 #define SetupLogFile	SetupLogFileA
2651 #define SetupOpenAppendInfFile	SetupOpenAppendInfFileA
2652 #define SetupOpenInfFile	SetupOpenInfFileA
2653 #define SetupPromptForDisk	SetupPromptForDiskA
2654 #define SetupQueryDrivesInDiskSpaceList	SetupQueryDrivesInDiskSpaceListA
2655 #define SetupQueryFileLog	SetupQueryFileLogA
2656 #define SetupQueryInfFileInformation	SetupQueryInfFileInformationA
2657 #define SetupQueryInfOriginalFileInformation	SetupQueryInfOriginalFileInformationA
2658 #define SetupQueryInfVersionInformation	SetupQueryInfVersionInformationA
2659 #define SetupQuerySourceList	SetupQuerySourceListA
2660 #define SetupQuerySpaceRequiredOnDrive	SetupQuerySpaceRequiredOnDriveA
2661 #define SetupQueueCopy	SetupQueueCopyA
2662 #define SetupQueueCopyIndirect	SetupQueueCopyIndirectA
2663 #define SetupQueueCopySection	SetupQueueCopySectionA
2664 #define SetupQueueDefaultCopy	SetupQueueDefaultCopyA
2665 #define SetupQueueDelete	SetupQueueDeleteA
2666 #define SetupQueueDeleteSection	SetupQueueDeleteSectionA
2667 #define SetupQueueRename	SetupQueueRenameA
2668 #define SetupQueueRenameSection	SetupQueueRenameSectionA
2669 #define SetupRemoveFileLogEntry	SetupRemoveFileLogEntryA
2670 #define SetupRemoveFromDiskSpaceList	SetupRemoveFromDiskSpaceListA
2671 #define SetupRemoveFromSourceList	SetupRemoveFromSourceListA
2672 #define SetupRemoveInstallSectionFromDiskSpaceList	SetupRemoveInstallSectionFromDiskSpaceListA
2673 #define SetupRemoveSectionFromDiskSpaceList	SetupRemoveSectionFromDiskSpaceListA
2674 #define SetupRenameError	SetupRenameErrorA
2675 #define SetupScanFileQueue	SetupScanFileQueueA
2676 #define SetupSetDirectoryId	SetupSetDirectoryIdA
2677 #define SetupSetDirectoryIdEx	SetupSetDirectoryIdExA
2678 #define SetupSetFileQueueAlternatePlatform	SetupSetFileQueueAlternatePlatformA
2679 #define SetupSetPlatformPathOverride	SetupSetPlatformPathOverrideA
2680 #define SetupSetSourceList	SetupSetSourceListA
2681 #define SetupUninstallOEMInf    SetupUninstallOEMInfA
2682 #endif	/* UNICODE */
2683 
2684 #endif /* RC_INVOKED */
2685 
2686 #ifdef __cplusplus
2687 }
2688 #endif
2689 
2690 #include <poppack.h>
2691 #endif /* _SETUPAPI_H_ */
2692 
2693