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