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