1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 #ifndef _INC_SETUPAPI
7 #define _INC_SETUPAPI
8 
9 #include <_mingw_unicode.h>
10 
11 #ifndef _SETUPAPI_
12 #define WINSETUPAPI DECLSPEC_IMPORT
13 #else
14 #define WINSETUPAPI
15 #endif
16 
17 #ifndef _SETUPAPI_VER
18 #define _SETUPAPI_VER 0x0502
19 #endif
20 
21 #ifndef __LPGUID_DEFINED__
22 #define __LPGUID_DEFINED__
23 typedef GUID *LPGUID;
24 #endif
25 
26 /* FIXME: #include <spapidef.h> */
27 #include <commctrl.h>
28 #include <devpropdef.h>
29 
30 #ifdef _WIN64
31 #include <pshpack8.h>
32 #else
33 #include <pshpack1.h>
34 #endif
35 
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
39 
40 #define LINE_LEN 256
41 
42 #define MAX_INF_STRING_LENGTH 4096
43 #define MAX_INF_SECTION_NAME_LENGTH 255
44 #define MAX_TITLE_LEN 60
45 #define MAX_INSTRUCTION_LEN 256
46 #define MAX_LABEL_LEN 30
47 #define MAX_SERVICE_NAME_LEN 256
48 #define MAX_SUBTITLE_LEN 256
49 
50 #define SP_MAX_MACHINENAME_LENGTH (MAX_PATH + 3)
51 
52   typedef PVOID HINF;
53 
54   typedef struct _INFCONTEXT {
55     PVOID Inf;
56     PVOID CurrentInf;
57     UINT Section;
58     UINT Line;
59   } INFCONTEXT,*PINFCONTEXT;
60 
61   typedef struct _SP_INF_INFORMATION {
62     DWORD InfStyle;
63     DWORD InfCount;
64     BYTE VersionData[ANYSIZE_ARRAY];
65   } SP_INF_INFORMATION,*PSP_INF_INFORMATION;
66 
67   typedef struct _SP_ALTPLATFORM_INFO_V2 {
68     DWORD cbSize;
69     DWORD Platform;
70     DWORD MajorVersion;
71     DWORD MinorVersion;
72     WORD ProcessorArchitecture;
73     __C89_NAMELESS union {
74       WORD Reserved;
75       WORD Flags;
76     };
77     DWORD FirstValidatedMajorVersion;
78     DWORD FirstValidatedMinorVersion;
79   } SP_ALTPLATFORM_INFO_V2,*PSP_ALTPLATFORM_INFO_V2;
80 
81   typedef struct _SP_ALTPLATFORM_INFO_V1 {
82     DWORD cbSize;
83     DWORD Platform;
84     DWORD MajorVersion;
85     DWORD MinorVersion;
86     WORD ProcessorArchitecture;
87     WORD Reserved;
88   } SP_ALTPLATFORM_INFO_V1,*PSP_ALTPLATFORM_INFO_V1;
89 
90 #if USE_SP_ALTPLATFORM_INFO_V1
91 
92   typedef SP_ALTPLATFORM_INFO_V1 SP_ALTPLATFORM_INFO;
93   typedef PSP_ALTPLATFORM_INFO_V1 PSP_ALTPLATFORM_INFO;
94 #else
95 
96   typedef SP_ALTPLATFORM_INFO_V2 SP_ALTPLATFORM_INFO;
97   typedef PSP_ALTPLATFORM_INFO_V2 PSP_ALTPLATFORM_INFO;
98 
99 #define SP_ALTPLATFORM_FLAGS_VERSION_RANGE (0x0001)
100 #endif
101 
102   typedef struct _SP_ORIGINAL_FILE_INFO_A {
103     DWORD cbSize;
104     CHAR OriginalInfName[MAX_PATH];
105     CHAR OriginalCatalogName[MAX_PATH];
106   } SP_ORIGINAL_FILE_INFO_A,*PSP_ORIGINAL_FILE_INFO_A;
107 
108   typedef struct _SP_ORIGINAL_FILE_INFO_W {
109     DWORD cbSize;
110     WCHAR OriginalInfName[MAX_PATH];
111     WCHAR OriginalCatalogName[MAX_PATH];
112   } SP_ORIGINAL_FILE_INFO_W,*PSP_ORIGINAL_FILE_INFO_W;
113 
114   __MINGW_TYPEDEF_UAW(SP_ORIGINAL_FILE_INFO)
115   __MINGW_TYPEDEF_UAW(PSP_ORIGINAL_FILE_INFO)
116 
117 #define INF_STYLE_NONE 0x00000000
118 #define INF_STYLE_OLDNT 0x00000001
119 #define INF_STYLE_WIN4 0x00000002
120 
121 #define INF_STYLE_CACHE_ENABLE 0x00000010
122 #define INF_STYLE_CACHE_DISABLE 0x00000020
123 #define INF_STYLE_CACHE_IGNORE 0x00000040
124 
125 #define DIRID_ABSOLUTE -1
126 #define DIRID_ABSOLUTE_16BIT 0xffff
127 #define DIRID_NULL 0
128 #define DIRID_SRCPATH 1
129 #define DIRID_WINDOWS 10
130 #define DIRID_SYSTEM 11
131 #define DIRID_DRIVERS 12
132 #define DIRID_IOSUBSYS DIRID_DRIVERS
133 #define DIRID_INF 17
134 #define DIRID_HELP 18
135 #define DIRID_FONTS 20
136 #define DIRID_VIEWERS 21
137 #define DIRID_COLOR 23
138 #define DIRID_APPS 24
139 #define DIRID_SHARED 25
140 #define DIRID_BOOT 30
141 
142 #define DIRID_SYSTEM16 50
143 #define DIRID_SPOOL 51
144 #define DIRID_SPOOLDRIVERS 52
145 #define DIRID_USERPROFILE 53
146 #define DIRID_LOADER 54
147 #define DIRID_PRINTPROCESSOR 55
148 
149 #define DIRID_DEFAULT DIRID_SYSTEM
150 
151 #define DIRID_COMMON_STARTMENU 16406
152 #define DIRID_COMMON_PROGRAMS 16407
153 #define DIRID_COMMON_STARTUP 16408
154 #define DIRID_COMMON_DESKTOPDIRECTORY 16409
155 #define DIRID_COMMON_FAVORITES 16415
156 #define DIRID_COMMON_APPDATA 16419
157 
158 #define DIRID_PROGRAM_FILES 16422
159 #define DIRID_SYSTEM_X86 16425
160 #define DIRID_PROGRAM_FILES_X86 16426
161 #define DIRID_PROGRAM_FILES_COMMON 16427
162 #define DIRID_PROGRAM_FILES_COMMONX86 16428
163 
164 #define DIRID_COMMON_TEMPLATES 16429
165 #define DIRID_COMMON_DOCUMENTS 16430
166 
167 #define DIRID_USER 0x8000
168 
169   typedef UINT (CALLBACK *PSP_FILE_CALLBACK_A)(PVOID Context,UINT Notification,UINT_PTR Param1,UINT_PTR Param2);
170   typedef UINT (CALLBACK *PSP_FILE_CALLBACK_W)(PVOID Context,UINT Notification,UINT_PTR Param1,UINT_PTR Param2);
171 
172 #define PSP_FILE_CALLBACK __MINGW_NAME_UAW(PSP_FILE_CALLBACK)
173 
174 #define SPFILENOTIFY_STARTQUEUE 0x00000001
175 #define SPFILENOTIFY_ENDQUEUE 0x00000002
176 #define SPFILENOTIFY_STARTSUBQUEUE 0x00000003
177 #define SPFILENOTIFY_ENDSUBQUEUE 0x00000004
178 #define SPFILENOTIFY_STARTDELETE 0x00000005
179 #define SPFILENOTIFY_ENDDELETE 0x00000006
180 #define SPFILENOTIFY_DELETEERROR 0x00000007
181 #define SPFILENOTIFY_STARTRENAME 0x00000008
182 #define SPFILENOTIFY_ENDRENAME 0x00000009
183 #define SPFILENOTIFY_RENAMEERROR 0x0000000a
184 #define SPFILENOTIFY_STARTCOPY 0x0000000b
185 #define SPFILENOTIFY_ENDCOPY 0x0000000c
186 #define SPFILENOTIFY_COPYERROR 0x0000000d
187 #define SPFILENOTIFY_NEEDMEDIA 0x0000000e
188 #define SPFILENOTIFY_QUEUESCAN 0x0000000f
189 
190 #define SPFILENOTIFY_CABINETINFO 0x00000010
191 #define SPFILENOTIFY_FILEINCABINET 0x00000011
192 #define SPFILENOTIFY_NEEDNEWCABINET 0x00000012
193 #define SPFILENOTIFY_FILEEXTRACTED 0x00000013
194 #define SPFILENOTIFY_FILEOPDELAYED 0x00000014
195 
196 #define SPFILENOTIFY_STARTBACKUP 0x00000015
197 #define SPFILENOTIFY_BACKUPERROR 0x00000016
198 #define SPFILENOTIFY_ENDBACKUP 0x00000017
199 
200 #define SPFILENOTIFY_QUEUESCAN_EX 0x00000018
201 
202 #define SPFILENOTIFY_STARTREGISTRATION 0x00000019
203 #define SPFILENOTIFY_ENDREGISTRATION 0x00000020
204 #define SPFILENOTIFY_QUEUESCAN_SIGNERINFO 0x00000040
205 
206 #define SPFILENOTIFY_LANGMISMATCH 0x00010000
207 #define SPFILENOTIFY_TARGETEXISTS 0x00020000
208 #define SPFILENOTIFY_TARGETNEWER 0x00040000
209 
210 #define FILEOP_COPY 0
211 #define FILEOP_RENAME 1
212 #define FILEOP_DELETE 2
213 #define FILEOP_BACKUP 3
214 
215 #define FILEOP_ABORT 0
216 #define FILEOP_DOIT 1
217 #define FILEOP_SKIP 2
218 #define FILEOP_RETRY FILEOP_DOIT
219 #define FILEOP_NEWPATH 4
220 
221 #define COPYFLG_WARN_IF_SKIP 0x00000001
222 #define COPYFLG_NOSKIP 0x00000002
223 #define COPYFLG_NOVERSIONCHECK 0x00000004
224 #define COPYFLG_FORCE_FILE_IN_USE 0x00000008
225 #define COPYFLG_NO_OVERWRITE 0x00000010
226 #define COPYFLG_NO_VERSION_DIALOG 0x00000020
227 #define COPYFLG_OVERWRITE_OLDER_ONLY 0x00000040
228 #define COPYFLG_REPLACEONLY 0x00000400
229 #define COPYFLG_NODECOMP 0x00000800
230 #define COPYFLG_REPLACE_BOOT_FILE 0x00001000
231 
232 #define COPYFLG_NOPRUNE 0x00002000
233 
234 #define DELFLG_IN_USE 0x00000001
235 #define DELFLG_IN_USE1 0x00010000
236 
237   typedef struct _FILEPATHS_A {
238     PCSTR Target;
239     PCSTR Source;
240     UINT Win32Error;
241     DWORD Flags;
242   } FILEPATHS_A,*PFILEPATHS_A;
243 
244   typedef struct _FILEPATHS_W {
245     PCWSTR Target;
246     PCWSTR Source;
247     UINT Win32Error;
248     DWORD Flags;
249   } FILEPATHS_W,*PFILEPATHS_W;
250 
251   __MINGW_TYPEDEF_UAW(FILEPATHS)
252   __MINGW_TYPEDEF_UAW(PFILEPATHS)
253 
254   typedef struct _FILEPATHS_SIGNERINFO_A {
255     PCSTR Target;
256     PCSTR Source;
257     UINT Win32Error;
258     DWORD Flags;
259     PCSTR DigitalSigner;
260     PCSTR Version;
261     PCSTR CatalogFile;
262   } FILEPATHS_SIGNERINFO_A,*PFILEPATHS_SIGNERINFO_A;
263 
264   typedef struct _FILEPATHS_SIGNERINFO_W {
265     PCWSTR Target;
266     PCWSTR Source;
267     UINT Win32Error;
268     DWORD Flags;
269     PCWSTR DigitalSigner;
270     PCWSTR Version;
271     PCWSTR CatalogFile;
272   } FILEPATHS_SIGNERINFO_W,*PFILEPATHS_SIGNERINFO_W;
273 
274   __MINGW_TYPEDEF_UAW(FILEPATHS_SIGNERINFO)
275   __MINGW_TYPEDEF_UAW(PFILEPATHS_SIGNERINFO)
276 
277   typedef struct _SOURCE_MEDIA_A {
278     PCSTR Reserved;
279     PCSTR Tagfile;
280     PCSTR Description;
281     PCSTR SourcePath;
282     PCSTR SourceFile;
283     DWORD Flags;
284   } SOURCE_MEDIA_A,*PSOURCE_MEDIA_A;
285 
286   typedef struct _SOURCE_MEDIA_W {
287     PCWSTR Reserved;
288     PCWSTR Tagfile;
289     PCWSTR Description;
290     PCWSTR SourcePath;
291     PCWSTR SourceFile;
292     DWORD Flags;
293   } SOURCE_MEDIA_W,*PSOURCE_MEDIA_W;
294 
295   __MINGW_TYPEDEF_UAW(SOURCE_MEDIA)
296   __MINGW_TYPEDEF_UAW(PSOURCE_MEDIA)
297 
298   typedef struct _CABINET_INFO_A {
299     PCSTR CabinetPath;
300     PCSTR CabinetFile;
301     PCSTR DiskName;
302     USHORT SetId;
303     USHORT CabinetNumber;
304   } CABINET_INFO_A,*PCABINET_INFO_A;
305 
306   typedef struct _CABINET_INFO_W {
307     PCWSTR CabinetPath;
308     PCWSTR CabinetFile;
309     PCWSTR DiskName;
310     USHORT SetId;
311     USHORT CabinetNumber;
312   } CABINET_INFO_W,*PCABINET_INFO_W;
313 
314   __MINGW_TYPEDEF_UAW(CABINET_INFO)
315   __MINGW_TYPEDEF_UAW(PCABINET_INFO)
316 
317   typedef struct _FILE_IN_CABINET_INFO_A {
318     PCSTR NameInCabinet;
319     DWORD FileSize;
320     DWORD Win32Error;
321     WORD DosDate;
322     WORD DosTime;
323     WORD DosAttribs;
324     CHAR FullTargetName[MAX_PATH];
325   } FILE_IN_CABINET_INFO_A,*PFILE_IN_CABINET_INFO_A;
326 
327   typedef struct _FILE_IN_CABINET_INFO_W {
328     PCWSTR NameInCabinet;
329     DWORD FileSize;
330     DWORD Win32Error;
331     WORD DosDate;
332     WORD DosTime;
333     WORD DosAttribs;
334     WCHAR FullTargetName[MAX_PATH];
335   } FILE_IN_CABINET_INFO_W,*PFILE_IN_CABINET_INFO_W;
336 
337   __MINGW_TYPEDEF_UAW(FILE_IN_CABINET_INFO)
338   __MINGW_TYPEDEF_UAW(PFILE_IN_CABINET_INFO)
339 
340   typedef struct _SP_REGISTER_CONTROL_STATUSA {
341     DWORD cbSize;
342     PCSTR FileName;
343     DWORD Win32Error;
344     DWORD FailureCode;
345   } SP_REGISTER_CONTROL_STATUSA,*PSP_REGISTER_CONTROL_STATUSA;
346 
347   typedef struct _SP_REGISTER_CONTROL_STATUSW {
348     DWORD cbSize;
349     PCWSTR FileName;
350     DWORD Win32Error;
351     DWORD FailureCode;
352   } SP_REGISTER_CONTROL_STATUSW,*PSP_REGISTER_CONTROL_STATUSW;
353 
354   __MINGW_TYPEDEF_AW(SP_REGISTER_CONTROL_STATUS)
355   __MINGW_TYPEDEF_AW(PSP_REGISTER_CONTROL_STATUS)
356 
357 #define SPREG_SUCCESS 0x00000000
358 #define SPREG_LOADLIBRARY 0x00000001
359 #define SPREG_GETPROCADDR 0x00000002
360 #define SPREG_REGSVR 0x00000003
361 #define SPREG_DLLINSTALL 0x00000004
362 #define SPREG_TIMEOUT 0x00000005
363 #define SPREG_UNKNOWN 0xFFFFFFFF
364 
365   typedef PVOID HSPFILEQ;
366 
367   typedef struct _SP_FILE_COPY_PARAMS_A {
368     DWORD cbSize;
369     HSPFILEQ QueueHandle;
370     PCSTR SourceRootPath;
371     PCSTR SourcePath;
372     PCSTR SourceFilename;
373     PCSTR SourceDescription;
374     PCSTR SourceTagfile;
375     PCSTR TargetDirectory;
376     PCSTR TargetFilename;
377     DWORD CopyStyle;
378     HINF LayoutInf;
379     PCSTR SecurityDescriptor;
380   } SP_FILE_COPY_PARAMS_A,*PSP_FILE_COPY_PARAMS_A;
381 
382   typedef struct _SP_FILE_COPY_PARAMS_W {
383     DWORD cbSize;
384     HSPFILEQ QueueHandle;
385     PCWSTR SourceRootPath;
386     PCWSTR SourcePath;
387     PCWSTR SourceFilename;
388     PCWSTR SourceDescription;
389     PCWSTR SourceTagfile;
390     PCWSTR TargetDirectory;
391     PCWSTR TargetFilename;
392     DWORD CopyStyle;
393     HINF LayoutInf;
394     PCWSTR SecurityDescriptor;
395   } SP_FILE_COPY_PARAMS_W,*PSP_FILE_COPY_PARAMS_W;
396 
397   __MINGW_TYPEDEF_UAW(SP_FILE_COPY_PARAMS)
398   __MINGW_TYPEDEF_UAW(PSP_FILE_COPY_PARAMS)
399 
400   typedef PVOID HDSKSPC;
401   typedef PVOID HDEVINFO;
402 
403   typedef struct _SP_DEVINFO_DATA {
404     DWORD cbSize;
405     GUID ClassGuid;
406     DWORD DevInst;
407     ULONG_PTR Reserved;
408   } SP_DEVINFO_DATA,*PSP_DEVINFO_DATA;
409 
410   typedef struct _SP_DEVICE_INTERFACE_DATA {
411     DWORD cbSize;
412     GUID InterfaceClassGuid;
413     DWORD Flags;
414     ULONG_PTR Reserved;
415   } SP_DEVICE_INTERFACE_DATA,*PSP_DEVICE_INTERFACE_DATA;
416 
417 #define SPINT_ACTIVE 0x00000001
418 #define SPINT_DEFAULT 0x00000002
419 #define SPINT_REMOVED 0x00000004
420 
421   typedef SP_DEVICE_INTERFACE_DATA SP_INTERFACE_DEVICE_DATA;
422   typedef PSP_DEVICE_INTERFACE_DATA PSP_INTERFACE_DEVICE_DATA;
423 #define SPID_ACTIVE SPINT_ACTIVE
424 #define SPID_DEFAULT SPINT_DEFAULT
425 #define SPID_REMOVED SPINT_REMOVED
426 
427   typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_A {
428     DWORD cbSize;
429     CHAR DevicePath[ANYSIZE_ARRAY];
430   } SP_DEVICE_INTERFACE_DETAIL_DATA_A,*PSP_DEVICE_INTERFACE_DETAIL_DATA_A;
431 
432   typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_W {
433     DWORD cbSize;
434     WCHAR DevicePath[ANYSIZE_ARRAY];
435   } SP_DEVICE_INTERFACE_DETAIL_DATA_W,*PSP_DEVICE_INTERFACE_DETAIL_DATA_W;
436 
437   __MINGW_TYPEDEF_UAW(SP_DEVICE_INTERFACE_DETAIL_DATA)
438   __MINGW_TYPEDEF_UAW(PSP_DEVICE_INTERFACE_DETAIL_DATA)
439 
440   typedef SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA_W;
441   typedef PSP_DEVICE_INTERFACE_DETAIL_DATA_W PSP_INTERFACE_DEVICE_DETAIL_DATA_W;
442   typedef SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA_A;
443   typedef PSP_DEVICE_INTERFACE_DETAIL_DATA_A PSP_INTERFACE_DEVICE_DETAIL_DATA_A;
444 
445   __MINGW_TYPEDEF_UAW(SP_INTERFACE_DEVICE_DETAIL_DATA)
446   __MINGW_TYPEDEF_UAW(PSP_INTERFACE_DEVICE_DETAIL_DATA)
447 
448   typedef struct _SP_DEVINFO_LIST_DETAIL_DATA_A {
449     DWORD cbSize;
450     GUID ClassGuid;
451     HANDLE RemoteMachineHandle;
452     CHAR RemoteMachineName[SP_MAX_MACHINENAME_LENGTH];
453   } SP_DEVINFO_LIST_DETAIL_DATA_A,*PSP_DEVINFO_LIST_DETAIL_DATA_A;
454 
455   typedef struct _SP_DEVINFO_LIST_DETAIL_DATA_W {
456     DWORD cbSize;
457     GUID ClassGuid;
458     HANDLE RemoteMachineHandle;
459     WCHAR RemoteMachineName[SP_MAX_MACHINENAME_LENGTH];
460   } SP_DEVINFO_LIST_DETAIL_DATA_W,*PSP_DEVINFO_LIST_DETAIL_DATA_W;
461 
462   __MINGW_TYPEDEF_UAW(SP_DEVINFO_LIST_DETAIL_DATA)
463   __MINGW_TYPEDEF_UAW(PSP_DEVINFO_LIST_DETAIL_DATA)
464 
465 #define DIF_SELECTDEVICE 0x00000001
466 #define DIF_INSTALLDEVICE 0x00000002
467 #define DIF_ASSIGNRESOURCES 0x00000003
468 #define DIF_PROPERTIES 0x00000004
469 #define DIF_REMOVE 0x00000005
470 #define DIF_FIRSTTIMESETUP 0x00000006
471 #define DIF_FOUNDDEVICE 0x00000007
472 #define DIF_SELECTCLASSDRIVERS 0x00000008
473 #define DIF_VALIDATECLASSDRIVERS 0x00000009
474 #define DIF_INSTALLCLASSDRIVERS 0x0000000A
475 #define DIF_CALCDISKSPACE 0x0000000B
476 #define DIF_DESTROYPRIVATEDATA 0x0000000C
477 #define DIF_VALIDATEDRIVER 0x0000000D
478 #define DIF_DETECT 0x0000000F
479 #define DIF_INSTALLWIZARD 0x00000010
480 #define DIF_DESTROYWIZARDDATA 0x00000011
481 #define DIF_PROPERTYCHANGE 0x00000012
482 #define DIF_ENABLECLASS 0x00000013
483 #define DIF_DETECTVERIFY 0x00000014
484 #define DIF_INSTALLDEVICEFILES 0x00000015
485 #define DIF_UNREMOVE 0x00000016
486 #define DIF_SELECTBESTCOMPATDRV 0x00000017
487 #define DIF_ALLOW_INSTALL 0x00000018
488 #define DIF_REGISTERDEVICE 0x00000019
489 #define DIF_NEWDEVICEWIZARD_PRESELECT 0x0000001A
490 #define DIF_NEWDEVICEWIZARD_SELECT 0x0000001B
491 #define DIF_NEWDEVICEWIZARD_PREANALYZE 0x0000001C
492 #define DIF_NEWDEVICEWIZARD_POSTANALYZE 0x0000001D
493 #define DIF_NEWDEVICEWIZARD_FINISHINSTALL 0x0000001E
494 #define DIF_UNUSED1 0x0000001F
495 #define DIF_INSTALLINTERFACES 0x00000020
496 #define DIF_DETECTCANCEL 0x00000021
497 #define DIF_REGISTER_COINSTALLERS 0x00000022
498 #define DIF_ADDPROPERTYPAGE_ADVANCED 0x00000023
499 #define DIF_ADDPROPERTYPAGE_BASIC 0x00000024
500 #define DIF_RESERVED1 0x00000025
501 #define DIF_TROUBLESHOOTER 0x00000026
502 #define DIF_POWERMESSAGEWAKE 0x00000027
503 #define DIF_ADDREMOTEPROPERTYPAGE_ADVANCED 0x00000028
504 #define DIF_UPDATEDRIVER_UI 0x00000029
505 #define DIF_RESERVED2 0x00000030
506 
507 #define DIF_MOVEDEVICE 0x0000000E
508 
509   typedef UINT DI_FUNCTION;
510 
511   typedef struct _SP_DEVINSTALL_PARAMS_A {
512     DWORD cbSize;
513     DWORD Flags;
514     DWORD FlagsEx;
515     HWND hwndParent;
516     PSP_FILE_CALLBACK InstallMsgHandler;
517     PVOID InstallMsgHandlerContext;
518     HSPFILEQ FileQueue;
519     ULONG_PTR ClassInstallReserved;
520     DWORD Reserved;
521     CHAR DriverPath[MAX_PATH];
522   } SP_DEVINSTALL_PARAMS_A,*PSP_DEVINSTALL_PARAMS_A;
523 
524   typedef struct _SP_DEVINSTALL_PARAMS_W {
525     DWORD cbSize;
526     DWORD Flags;
527     DWORD FlagsEx;
528     HWND hwndParent;
529     PSP_FILE_CALLBACK InstallMsgHandler;
530     PVOID InstallMsgHandlerContext;
531     HSPFILEQ FileQueue;
532     ULONG_PTR ClassInstallReserved;
533     DWORD Reserved;
534     WCHAR DriverPath[MAX_PATH];
535   } SP_DEVINSTALL_PARAMS_W,*PSP_DEVINSTALL_PARAMS_W;
536 
537   __MINGW_TYPEDEF_UAW(SP_DEVINSTALL_PARAMS)
538   __MINGW_TYPEDEF_UAW(PSP_DEVINSTALL_PARAMS)
539 
540 #define DI_SHOWOEM __MSABI_LONG(0x00000001)
541 #define DI_SHOWCOMPAT __MSABI_LONG(0x00000002)
542 #define DI_SHOWCLASS __MSABI_LONG(0x00000004)
543 #define DI_SHOWALL __MSABI_LONG(0x00000007)
544 #define DI_NOVCP __MSABI_LONG(0x00000008)
545 #define DI_DIDCOMPAT __MSABI_LONG(0x00000010)
546 #define DI_DIDCLASS __MSABI_LONG(0x00000020)
547 #define DI_AUTOASSIGNRES __MSABI_LONG(0x00000040)
548 #define DI_NEEDRESTART __MSABI_LONG(0x00000080)
549 #define DI_NEEDREBOOT __MSABI_LONG(0x00000100)
550 #define DI_NOBROWSE __MSABI_LONG(0x00000200)
551 #define DI_MULTMFGS __MSABI_LONG(0x00000400)
552 #define DI_DISABLED __MSABI_LONG(0x00000800)
553 #define DI_GENERALPAGE_ADDED __MSABI_LONG(0x00001000)
554 #define DI_RESOURCEPAGE_ADDED __MSABI_LONG(0x00002000)
555 #define DI_PROPERTIES_CHANGE __MSABI_LONG(0x00004000)
556 #define DI_INF_IS_SORTED __MSABI_LONG(0x00008000)
557 #define DI_ENUMSINGLEINF __MSABI_LONG(0x00010000)
558 #define DI_DONOTCALLCONFIGMG __MSABI_LONG(0x00020000)
559 #define DI_INSTALLDISABLED __MSABI_LONG(0x00040000)
560 #define DI_COMPAT_FROM_CLASS __MSABI_LONG(0x00080000)
561 #define DI_CLASSINSTALLPARAMS __MSABI_LONG(0x00100000)
562 #define DI_NODI_DEFAULTACTION __MSABI_LONG(0x00200000)
563 #define DI_QUIETINSTALL __MSABI_LONG(0x00800000)
564 #define DI_NOFILECOPY __MSABI_LONG(0x01000000)
565 #define DI_FORCECOPY __MSABI_LONG(0x02000000)
566 #define DI_DRIVERPAGE_ADDED __MSABI_LONG(0x04000000)
567 #define DI_USECI_SELECTSTRINGS __MSABI_LONG(0x08000000)
568 #define DI_OVERRIDE_INFFLAGS __MSABI_LONG(0x10000000)
569 #define DI_PROPS_NOCHANGEUSAGE __MSABI_LONG(0x20000000)
570 #define DI_NOSELECTICONS __MSABI_LONG(0x40000000)
571 #define DI_NOWRITE_IDS __MSABI_LONG(0x80000000)
572 #define DI_FLAGSEX_USEOLDINFSEARCH __MSABI_LONG(0x00000001)
573 #define DI_FLAGSEX_RESERVED2 __MSABI_LONG(0x00000002)
574 #define DI_FLAGSEX_CI_FAILED __MSABI_LONG(0x00000004)
575 #define DI_FLAGSEX_DIDINFOLIST __MSABI_LONG(0x00000010)
576 #define DI_FLAGSEX_DIDCOMPATINFO __MSABI_LONG(0x00000020)
577 #define DI_FLAGSEX_FILTERCLASSES __MSABI_LONG(0x00000040)
578 #define DI_FLAGSEX_SETFAILEDINSTALL __MSABI_LONG(0x00000080)
579 #define DI_FLAGSEX_DEVICECHANGE __MSABI_LONG(0x00000100)
580 #define DI_FLAGSEX_ALWAYSWRITEIDS __MSABI_LONG(0x00000200)
581 #define DI_FLAGSEX_PROPCHANGE_PENDING __MSABI_LONG(0x00000400)
582 #define DI_FLAGSEX_ALLOWEXCLUDEDDRVS __MSABI_LONG(0x00000800)
583 #define DI_FLAGSEX_NOUIONQUERYREMOVE __MSABI_LONG(0x00001000)
584 #define DI_FLAGSEX_USECLASSFORCOMPAT __MSABI_LONG(0x00002000)
585 #define DI_FLAGSEX_RESERVED3 __MSABI_LONG(0x00004000)
586 #define DI_FLAGSEX_NO_DRVREG_MODIFY __MSABI_LONG(0x00008000)
587 #define DI_FLAGSEX_IN_SYSTEM_SETUP __MSABI_LONG(0x00010000)
588 #define DI_FLAGSEX_INET_DRIVER __MSABI_LONG(0x00020000)
589 #define DI_FLAGSEX_APPENDDRIVERLIST __MSABI_LONG(0x00040000)
590 #define DI_FLAGSEX_PREINSTALLBACKUP __MSABI_LONG(0x00080000)
591 #define DI_FLAGSEX_BACKUPONREPLACE __MSABI_LONG(0x00100000)
592 #define DI_FLAGSEX_DRIVERLIST_FROM_URL __MSABI_LONG(0x00200000)
593 #define DI_FLAGSEX_RESERVED1 __MSABI_LONG(0x00400000)
594 #define DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS __MSABI_LONG(0x00800000)
595 #define DI_FLAGSEX_POWERPAGE_ADDED __MSABI_LONG(0x01000000)
596 #define DI_FLAGSEX_FILTERSIMILARDRIVERS __MSABI_LONG(0x02000000)
597 #define DI_FLAGSEX_INSTALLEDDRIVER __MSABI_LONG(0x04000000)
598 #define DI_FLAGSEX_NO_CLASSLIST_NODE_MERGE __MSABI_LONG(0x08000000)
599 #define DI_FLAGSEX_ALTPLATFORM_DRVSEARCH __MSABI_LONG(0x10000000)
600 #define DI_FLAGSEX_RESTART_DEVICE_ONLY __MSABI_LONG(0x20000000)
601 
602   typedef struct _SP_CLASSINSTALL_HEADER {
603     DWORD cbSize;
604     DI_FUNCTION InstallFunction;
605   } SP_CLASSINSTALL_HEADER,*PSP_CLASSINSTALL_HEADER;
606 
607   typedef struct _SP_ENABLECLASS_PARAMS {
608     SP_CLASSINSTALL_HEADER ClassInstallHeader;
609     GUID ClassGuid;
610     DWORD EnableMessage;
611   } SP_ENABLECLASS_PARAMS,*PSP_ENABLECLASS_PARAMS;
612 
613 #define ENABLECLASS_QUERY 0
614 #define ENABLECLASS_SUCCESS 1
615 #define ENABLECLASS_FAILURE 2
616 
617 #define DICS_ENABLE 0x00000001
618 #define DICS_DISABLE 0x00000002
619 #define DICS_PROPCHANGE 0x00000003
620 #define DICS_START 0x00000004
621 #define DICS_STOP 0x00000005
622 
623 #define DICS_FLAG_GLOBAL 0x00000001
624 #define DICS_FLAG_CONFIGSPECIFIC 0x00000002
625 #define DICS_FLAG_CONFIGGENERAL 0x00000004
626 
627   typedef struct _SP_PROPCHANGE_PARAMS {
628     SP_CLASSINSTALL_HEADER ClassInstallHeader;
629     DWORD StateChange;
630     DWORD Scope;
631     DWORD HwProfile;
632   } SP_PROPCHANGE_PARAMS,*PSP_PROPCHANGE_PARAMS;
633 
634   typedef struct _SP_REMOVEDEVICE_PARAMS {
635     SP_CLASSINSTALL_HEADER ClassInstallHeader;
636     DWORD Scope;
637     DWORD HwProfile;
638   } SP_REMOVEDEVICE_PARAMS,*PSP_REMOVEDEVICE_PARAMS;
639 
640 #define DI_REMOVEDEVICE_GLOBAL 0x00000001
641 #define DI_REMOVEDEVICE_CONFIGSPECIFIC 0x00000002
642 
643   typedef struct _SP_UNREMOVEDEVICE_PARAMS {
644     SP_CLASSINSTALL_HEADER ClassInstallHeader;
645     DWORD Scope;
646     DWORD HwProfile;
647   } SP_UNREMOVEDEVICE_PARAMS,*PSP_UNREMOVEDEVICE_PARAMS;
648 
649 #define DI_UNREMOVEDEVICE_CONFIGSPECIFIC 0x00000002
650 
651   typedef struct _SP_SELECTDEVICE_PARAMS_A {
652     SP_CLASSINSTALL_HEADER ClassInstallHeader;
653     CHAR Title[MAX_TITLE_LEN];
654     CHAR Instructions[MAX_INSTRUCTION_LEN];
655     CHAR ListLabel[MAX_LABEL_LEN];
656     CHAR SubTitle[MAX_SUBTITLE_LEN];
657     BYTE Reserved[2];
658   } SP_SELECTDEVICE_PARAMS_A,*PSP_SELECTDEVICE_PARAMS_A;
659 
660   typedef struct _SP_SELECTDEVICE_PARAMS_W {
661     SP_CLASSINSTALL_HEADER ClassInstallHeader;
662     WCHAR Title[MAX_TITLE_LEN];
663     WCHAR Instructions[MAX_INSTRUCTION_LEN];
664     WCHAR ListLabel[MAX_LABEL_LEN];
665     WCHAR SubTitle[MAX_SUBTITLE_LEN];
666   } SP_SELECTDEVICE_PARAMS_W,*PSP_SELECTDEVICE_PARAMS_W;
667 
668   __MINGW_TYPEDEF_UAW(SP_SELECTDEVICE_PARAMS)
669   __MINGW_TYPEDEF_UAW(PSP_SELECTDEVICE_PARAMS)
670 
671   typedef WINBOOL (CALLBACK *PDETECT_PROGRESS_NOTIFY)(PVOID ProgressNotifyParam,DWORD DetectComplete);
672 
673   typedef struct _SP_DETECTDEVICE_PARAMS {
674     SP_CLASSINSTALL_HEADER ClassInstallHeader;
675     PDETECT_PROGRESS_NOTIFY DetectProgressNotify;
676     PVOID ProgressNotifyParam;
677   } SP_DETECTDEVICE_PARAMS,*PSP_DETECTDEVICE_PARAMS;
678 
679 #define MAX_INSTALLWIZARD_DYNAPAGES 20
680 
681   typedef struct _SP_INSTALLWIZARD_DATA {
682     SP_CLASSINSTALL_HEADER ClassInstallHeader;
683     DWORD Flags;
684     HPROPSHEETPAGE DynamicPages[MAX_INSTALLWIZARD_DYNAPAGES];
685     DWORD NumDynamicPages;
686     DWORD DynamicPageFlags;
687     DWORD PrivateFlags;
688     LPARAM PrivateData;
689     HWND hwndWizardDlg;
690   } SP_INSTALLWIZARD_DATA,*PSP_INSTALLWIZARD_DATA;
691 
692 #define NDW_INSTALLFLAG_DIDFACTDEFS 0x00000001
693 #define NDW_INSTALLFLAG_HARDWAREALLREADYIN 0x00000002
694 #define NDW_INSTALLFLAG_NEEDRESTART DI_NEEDRESTART
695 #define NDW_INSTALLFLAG_NEEDREBOOT DI_NEEDREBOOT
696 #define NDW_INSTALLFLAG_NEEDSHUTDOWN 0x00000200
697 #define NDW_INSTALLFLAG_EXPRESSINTRO 0x00000400
698 #define NDW_INSTALLFLAG_SKIPISDEVINSTALLED 0x00000800
699 #define NDW_INSTALLFLAG_NODETECTEDDEVS 0x00001000
700 #define NDW_INSTALLFLAG_INSTALLSPECIFIC 0x00002000
701 #define NDW_INSTALLFLAG_SKIPCLASSLIST 0x00004000
702 #define NDW_INSTALLFLAG_CI_PICKED_OEM 0x00008000
703 #define NDW_INSTALLFLAG_PCMCIAMODE 0x00010000
704 #define NDW_INSTALLFLAG_PCMCIADEVICE 0x00020000
705 #define NDW_INSTALLFLAG_USERCANCEL 0x00040000
706 #define NDW_INSTALLFLAG_KNOWNCLASS 0x00080000
707 
708 #define DYNAWIZ_FLAG_PAGESADDED 0x00000001
709 #define DYNAWIZ_FLAG_ANALYZE_HANDLECONFLICT 0x00000008
710 #define DYNAWIZ_FLAG_INSTALLDET_NEXT 0x00000002
711 #define DYNAWIZ_FLAG_INSTALLDET_PREV 0x00000004
712 
713 #define MIN_IDD_DYNAWIZ_RESOURCE_ID 10000
714 #define MAX_IDD_DYNAWIZ_RESOURCE_ID 11000
715 
716 #define IDD_DYNAWIZ_FIRSTPAGE 10000
717 #define IDD_DYNAWIZ_SELECT_PREVPAGE 10001
718 #define IDD_DYNAWIZ_SELECT_NEXTPAGE 10002
719 #define IDD_DYNAWIZ_ANALYZE_PREVPAGE 10003
720 #define IDD_DYNAWIZ_ANALYZE_NEXTPAGE 10004
721 #define IDD_DYNAWIZ_SELECTDEV_PAGE 10009
722 #define IDD_DYNAWIZ_ANALYZEDEV_PAGE 10010
723 #define IDD_DYNAWIZ_INSTALLDETECTEDDEVS_PAGE 10011
724 #define IDD_DYNAWIZ_SELECTCLASS_PAGE 10012
725 #define IDD_DYNAWIZ_INSTALLDETECTED_PREVPAGE 10006
726 #define IDD_DYNAWIZ_INSTALLDETECTED_NEXTPAGE 10007
727 #define IDD_DYNAWIZ_INSTALLDETECTED_NODEVS 10008
728 
729   typedef struct _SP_NEWDEVICEWIZARD_DATA {
730     SP_CLASSINSTALL_HEADER ClassInstallHeader;
731     DWORD Flags;
732     HPROPSHEETPAGE DynamicPages[MAX_INSTALLWIZARD_DYNAPAGES];
733     DWORD NumDynamicPages;
734     HWND hwndWizardDlg;
735   } SP_NEWDEVICEWIZARD_DATA,*PSP_NEWDEVICEWIZARD_DATA;
736 
737   typedef SP_NEWDEVICEWIZARD_DATA SP_ADDPROPERTYPAGE_DATA;
738   typedef PSP_NEWDEVICEWIZARD_DATA PSP_ADDPROPERTYPAGE_DATA;
739 
740   typedef struct _SP_TROUBLESHOOTER_PARAMS_A {
741     SP_CLASSINSTALL_HEADER ClassInstallHeader;
742     CHAR ChmFile[MAX_PATH];
743     CHAR HtmlTroubleShooter[MAX_PATH];
744   } SP_TROUBLESHOOTER_PARAMS_A,*PSP_TROUBLESHOOTER_PARAMS_A;
745 
746   typedef struct _SP_TROUBLESHOOTER_PARAMS_W {
747     SP_CLASSINSTALL_HEADER ClassInstallHeader;
748     WCHAR ChmFile[MAX_PATH];
749     WCHAR HtmlTroubleShooter[MAX_PATH];
750   } SP_TROUBLESHOOTER_PARAMS_W,*PSP_TROUBLESHOOTER_PARAMS_W;
751 
752   __MINGW_TYPEDEF_UAW(SP_TROUBLESHOOTER_PARAMS)
753   __MINGW_TYPEDEF_UAW(PSP_TROUBLESHOOTER_PARAMS)
754 
755   typedef struct _SP_POWERMESSAGEWAKE_PARAMS_A {
756     SP_CLASSINSTALL_HEADER ClassInstallHeader;
757     CHAR PowerMessageWake[LINE_LEN*2];
758   } SP_POWERMESSAGEWAKE_PARAMS_A,*PSP_POWERMESSAGEWAKE_PARAMS_A;
759 
760   typedef struct _SP_POWERMESSAGEWAKE_PARAMS_W {
761     SP_CLASSINSTALL_HEADER ClassInstallHeader;
762     WCHAR PowerMessageWake[LINE_LEN*2];
763   } SP_POWERMESSAGEWAKE_PARAMS_W,*PSP_POWERMESSAGEWAKE_PARAMS_W;
764 
765   __MINGW_TYPEDEF_UAW(SP_POWERMESSAGEWAKE_PARAMS)
766   __MINGW_TYPEDEF_UAW(PSP_POWERMESSAGEWAKE_PARAMS)
767 
768   typedef struct _SP_DRVINFO_DATA_V2_A {
769     DWORD cbSize;
770     DWORD DriverType;
771     ULONG_PTR Reserved;
772     CHAR Description[LINE_LEN];
773     CHAR MfgName[LINE_LEN];
774     CHAR ProviderName[LINE_LEN];
775     FILETIME DriverDate;
776     DWORDLONG DriverVersion;
777   } SP_DRVINFO_DATA_V2_A,*PSP_DRVINFO_DATA_V2_A;
778 
779   typedef struct _SP_DRVINFO_DATA_V2_W {
780     DWORD cbSize;
781     DWORD DriverType;
782     ULONG_PTR Reserved;
783     WCHAR Description[LINE_LEN];
784     WCHAR MfgName[LINE_LEN];
785     WCHAR ProviderName[LINE_LEN];
786     FILETIME DriverDate;
787     DWORDLONG DriverVersion;
788   } SP_DRVINFO_DATA_V2_W,*PSP_DRVINFO_DATA_V2_W;
789 
790   typedef struct _SP_DRVINFO_DATA_V1_A {
791     DWORD cbSize;
792     DWORD DriverType;
793     ULONG_PTR Reserved;
794     CHAR Description[LINE_LEN];
795     CHAR MfgName[LINE_LEN];
796     CHAR ProviderName[LINE_LEN];
797   } SP_DRVINFO_DATA_V1_A,*PSP_DRVINFO_DATA_V1_A;
798 
799   typedef struct _SP_DRVINFO_DATA_V1_W {
800     DWORD cbSize;
801     DWORD DriverType;
802     ULONG_PTR Reserved;
803     WCHAR Description[LINE_LEN];
804     WCHAR MfgName[LINE_LEN];
805     WCHAR ProviderName[LINE_LEN];
806   } SP_DRVINFO_DATA_V1_W,*PSP_DRVINFO_DATA_V1_W;
807 
808   __MINGW_TYPEDEF_UAW(SP_DRVINFO_DATA_V1)
809   __MINGW_TYPEDEF_UAW(PSP_DRVINFO_DATA_V1)
810   __MINGW_TYPEDEF_UAW(SP_DRVINFO_DATA_V2)
811   __MINGW_TYPEDEF_UAW(PSP_DRVINFO_DATA_V2)
812 
813 #if USE_SP_DRVINFO_DATA_V1
814 
815   typedef SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_A;
816   typedef PSP_DRVINFO_DATA_V1_A PSP_DRVINFO_DATA_A;
817   typedef SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_W;
818   typedef PSP_DRVINFO_DATA_V1_W PSP_DRVINFO_DATA_W;
819   typedef SP_DRVINFO_DATA_V1 SP_DRVINFO_DATA;
820   typedef PSP_DRVINFO_DATA_V1 PSP_DRVINFO_DATA;
821 #else
822 
823   typedef SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_A;
824   typedef PSP_DRVINFO_DATA_V2_A PSP_DRVINFO_DATA_A;
825   typedef SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_W;
826   typedef PSP_DRVINFO_DATA_V2_W PSP_DRVINFO_DATA_W;
827   typedef SP_DRVINFO_DATA_V2 SP_DRVINFO_DATA;
828   typedef PSP_DRVINFO_DATA_V2 PSP_DRVINFO_DATA;
829 #endif
830 
831   typedef struct _SP_DRVINFO_DETAIL_DATA_A {
832     DWORD cbSize;
833     FILETIME InfDate;
834     DWORD CompatIDsOffset;
835     DWORD CompatIDsLength;
836     ULONG_PTR Reserved;
837     CHAR SectionName[LINE_LEN];
838     CHAR InfFileName[MAX_PATH];
839     CHAR DrvDescription[LINE_LEN];
840     CHAR HardwareID[ANYSIZE_ARRAY];
841   } SP_DRVINFO_DETAIL_DATA_A,*PSP_DRVINFO_DETAIL_DATA_A;
842 
843   typedef struct _SP_DRVINFO_DETAIL_DATA_W {
844     DWORD cbSize;
845     FILETIME InfDate;
846     DWORD CompatIDsOffset;
847     DWORD CompatIDsLength;
848     ULONG_PTR Reserved;
849     WCHAR SectionName[LINE_LEN];
850     WCHAR InfFileName[MAX_PATH];
851     WCHAR DrvDescription[LINE_LEN];
852     WCHAR HardwareID[ANYSIZE_ARRAY];
853   } SP_DRVINFO_DETAIL_DATA_W,*PSP_DRVINFO_DETAIL_DATA_W;
854 
855   __MINGW_TYPEDEF_UAW(SP_DRVINFO_DETAIL_DATA)
856   __MINGW_TYPEDEF_UAW(PSP_DRVINFO_DETAIL_DATA)
857 
858   typedef struct _SP_DRVINSTALL_PARAMS {
859     DWORD cbSize;
860     DWORD Rank;
861     DWORD Flags;
862     DWORD_PTR PrivateData;
863     DWORD Reserved;
864   } SP_DRVINSTALL_PARAMS,*PSP_DRVINSTALL_PARAMS;
865 
866 #define DNF_DUPDESC 0x00000001
867 #define DNF_OLDDRIVER 0x00000002
868 #define DNF_EXCLUDEFROMLIST 0x00000004
869 #define DNF_NODRIVER 0x00000008
870 #define DNF_LEGACYINF 0x00000010
871 #define DNF_CLASS_DRIVER 0x00000020
872 #define DNF_COMPATIBLE_DRIVER 0x00000040
873 #define DNF_INET_DRIVER 0x00000080
874 #define DNF_UNUSED1 0x00000100
875 #define DNF_INDEXED_DRIVER 0x00000200
876 #define DNF_OLD_INET_DRIVER 0x00000400
877 #define DNF_BAD_DRIVER 0x00000800
878 #define DNF_DUPPROVIDER 0x00001000
879 #define DNF_INF_IS_SIGNED 0x00002000
880 #define DNF_OEM_F6_INF 0x00004000
881 #define DNF_DUPDRIVERVER 0x00008000
882 #define DNF_BASIC_DRIVER 0x00010000
883 #define DNF_AUTHENTICODE_SIGNED 0x00020000
884 
885 #define DRIVER_HARDWAREID_RANK 0x00000FFF
886 #define DRIVER_COMPATID_RANK 0x00003FFF
887 #define DRIVER_UNTRUSTED_RANK 0x00008000
888 #define DRIVER_UNTRUSTED_HARDWAREID_RANK 0x00008FFF
889 #define DRIVER_UNTRUSTED_COMPATID_RANK 0x0000BFFF
890 #define DRIVER_W9X_SUSPECT_RANK 0x0000C000
891 #define DRIVER_W9X_SUSPECT_HARDWAREID_RANK 0x0000CFFF
892 #define DRIVER_W9X_SUSPECT_COMPATID_RANK 0x0000FFFF
893 
894   typedef DWORD (CALLBACK *PSP_DETSIG_CMPPROC)(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA NewDeviceData,PSP_DEVINFO_DATA ExistingDeviceData,PVOID CompareContext);
895 
896   typedef struct _COINSTALLER_CONTEXT_DATA {
897     WINBOOL PostProcessing;
898     DWORD InstallResult;
899     PVOID PrivateData;
900   } COINSTALLER_CONTEXT_DATA,*PCOINSTALLER_CONTEXT_DATA;
901 
902   typedef struct _SP_CLASSIMAGELIST_DATA {
903     DWORD cbSize;
904     HIMAGELIST ImageList;
905     ULONG_PTR Reserved;
906   } SP_CLASSIMAGELIST_DATA,*PSP_CLASSIMAGELIST_DATA;
907 
908   typedef struct _SP_PROPSHEETPAGE_REQUEST {
909     DWORD cbSize;
910     DWORD PageRequested;
911     HDEVINFO DeviceInfoSet;
912     PSP_DEVINFO_DATA DeviceInfoData;
913   } SP_PROPSHEETPAGE_REQUEST,*PSP_PROPSHEETPAGE_REQUEST;
914 
915 #define SPPSR_SELECT_DEVICE_RESOURCES 1
916 #define SPPSR_ENUM_BASIC_DEVICE_PROPERTIES 2
917 #define SPPSR_ENUM_ADV_DEVICE_PROPERTIES 3
918 
919   typedef struct _SP_BACKUP_QUEUE_PARAMS_V2_A {
920     DWORD cbSize;
921     CHAR FullInfPath[MAX_PATH];
922     INT FilenameOffset;
923     CHAR ReinstallInstance[MAX_PATH];
924   } SP_BACKUP_QUEUE_PARAMS_V2_A,*PSP_BACKUP_QUEUE_PARAMS_V2_A;
925 
926   typedef struct _SP_BACKUP_QUEUE_PARAMS_V2_W {
927     DWORD cbSize;
928     WCHAR FullInfPath[MAX_PATH];
929     INT FilenameOffset;
930     WCHAR ReinstallInstance[MAX_PATH];
931   } SP_BACKUP_QUEUE_PARAMS_V2_W,*PSP_BACKUP_QUEUE_PARAMS_V2_W;
932 
933   typedef struct _SP_BACKUP_QUEUE_PARAMS_V1_A {
934     DWORD cbSize;
935     CHAR FullInfPath[MAX_PATH];
936     INT FilenameOffset;
937   } SP_BACKUP_QUEUE_PARAMS_V1_A,*PSP_BACKUP_QUEUE_PARAMS_V1_A;
938 
939   typedef struct _SP_BACKUP_QUEUE_PARAMS_V1_W {
940     DWORD cbSize;
941     WCHAR FullInfPath[MAX_PATH];
942     INT FilenameOffset;
943   } SP_BACKUP_QUEUE_PARAMS_V1_W,*PSP_BACKUP_QUEUE_PARAMS_V1_W;
944 
945   __MINGW_TYPEDEF_UAW(SP_BACKUP_QUEUE_PARAMS_V1)
946   __MINGW_TYPEDEF_UAW(PSP_BACKUP_QUEUE_PARAMS_V1)
947   __MINGW_TYPEDEF_UAW(SP_BACKUP_QUEUE_PARAMS_V2)
948   __MINGW_TYPEDEF_UAW(PSP_BACKUP_QUEUE_PARAMS_V2)
949 
950 #if USE_SP_BACKUP_QUEUE_PARAMS_V1
951 
952   typedef SP_BACKUP_QUEUE_PARAMS_V1_A SP_BACKUP_QUEUE_PARAMS_A;
953   typedef PSP_BACKUP_QUEUE_PARAMS_V1_A PSP_BACKUP_QUEUE_PARAMS_A;
954   typedef SP_BACKUP_QUEUE_PARAMS_V1_W SP_BACKUP_QUEUE_PARAMS_W;
955   typedef PSP_BACKUP_QUEUE_PARAMS_V1_W PSP_BACKUP_QUEUE_PARAMS_W;
956   typedef SP_BACKUP_QUEUE_PARAMS_V1 SP_BACKUP_QUEUE_PARAMS;
957   typedef PSP_BACKUP_QUEUE_PARAMS_V1 PSP_BACKUP_QUEUE_PARAMS;
958 #else
959 
960   typedef SP_BACKUP_QUEUE_PARAMS_V2_A SP_BACKUP_QUEUE_PARAMS_A;
961   typedef PSP_BACKUP_QUEUE_PARAMS_V2_A PSP_BACKUP_QUEUE_PARAMS_A;
962   typedef SP_BACKUP_QUEUE_PARAMS_V2_W SP_BACKUP_QUEUE_PARAMS_W;
963   typedef PSP_BACKUP_QUEUE_PARAMS_V2_W PSP_BACKUP_QUEUE_PARAMS_W;
964   typedef SP_BACKUP_QUEUE_PARAMS_V2 SP_BACKUP_QUEUE_PARAMS;
965   typedef PSP_BACKUP_QUEUE_PARAMS_V2 PSP_BACKUP_QUEUE_PARAMS;
966 #endif
967 
968 #define ERROR_EXPECTED_SECTION_NAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0)
969 #define ERROR_BAD_SECTION_NAME_LINE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|1)
970 #define ERROR_SECTION_NAME_TOO_LONG (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|2)
971 #define ERROR_GENERAL_SYNTAX (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|3)
972 #define ERROR_WRONG_INF_STYLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x100)
973 #define ERROR_SECTION_NOT_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x101)
974 #define ERROR_LINE_NOT_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x102)
975 #define ERROR_NO_BACKUP (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x103)
976 #define ERROR_NO_ASSOCIATED_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x200)
977 #define ERROR_CLASS_MISMATCH (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x201)
978 #define ERROR_DUPLICATE_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x202)
979 #define ERROR_NO_DRIVER_SELECTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x203)
980 #define ERROR_KEY_DOES_NOT_EXIST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x204)
981 #define ERROR_INVALID_DEVINST_NAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x205)
982 #define ERROR_INVALID_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x206)
983 #define ERROR_DEVINST_ALREADY_EXISTS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x207)
984 #define ERROR_DEVINFO_NOT_REGISTERED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x208)
985 #define ERROR_INVALID_REG_PROPERTY (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x209)
986 #define ERROR_NO_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20A)
987 #define ERROR_NO_SUCH_DEVINST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20B)
988 #define ERROR_CANT_LOAD_CLASS_ICON (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20C)
989 #define ERROR_INVALID_CLASS_INSTALLER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20D)
990 #define ERROR_DI_DO_DEFAULT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20E)
991 #define ERROR_DI_NOFILECOPY (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20F)
992 #define ERROR_INVALID_HWPROFILE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x210)
993 #define ERROR_NO_DEVICE_SELECTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x211)
994 #define ERROR_DEVINFO_LIST_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x212)
995 #define ERROR_DEVINFO_DATA_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x213)
996 #define ERROR_DI_BAD_PATH (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x214)
997 #define ERROR_NO_CLASSINSTALL_PARAMS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x215)
998 #define ERROR_FILEQUEUE_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x216)
999 #define ERROR_BAD_SERVICE_INSTALLSECT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x217)
1000 #define ERROR_NO_CLASS_DRIVER_LIST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x218)
1001 #define ERROR_NO_ASSOCIATED_SERVICE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x219)
1002 #define ERROR_NO_DEFAULT_DEVICE_INTERFACE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21A)
1003 #define ERROR_DEVICE_INTERFACE_ACTIVE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21B)
1004 #define ERROR_DEVICE_INTERFACE_REMOVED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21C)
1005 #define ERROR_BAD_INTERFACE_INSTALLSECT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21D)
1006 #define ERROR_NO_SUCH_INTERFACE_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21E)
1007 #define ERROR_INVALID_REFERENCE_STRING (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21F)
1008 #define ERROR_INVALID_MACHINENAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x220)
1009 #define ERROR_REMOTE_COMM_FAILURE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x221)
1010 #define ERROR_MACHINE_UNAVAILABLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x222)
1011 #define ERROR_NO_CONFIGMGR_SERVICES (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x223)
1012 #define ERROR_INVALID_PROPPAGE_PROVIDER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x224)
1013 #define ERROR_NO_SUCH_DEVICE_INTERFACE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x225)
1014 #define ERROR_DI_POSTPROCESSING_REQUIRED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x226)
1015 #define ERROR_INVALID_COINSTALLER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x227)
1016 #define ERROR_NO_COMPAT_DRIVERS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x228)
1017 #define ERROR_NO_DEVICE_ICON (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x229)
1018 #define ERROR_INVALID_INF_LOGCONFIG (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22A)
1019 #define ERROR_DI_DONT_INSTALL (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22B)
1020 #define ERROR_INVALID_FILTER_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22C)
1021 #define ERROR_NON_WINDOWS_NT_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22D)
1022 #define ERROR_NON_WINDOWS_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22E)
1023 #define ERROR_NO_CATALOG_FOR_OEM_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22F)
1024 #define ERROR_DEVINSTALL_QUEUE_NONNATIVE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x230)
1025 #define ERROR_NOT_DISABLEABLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x231)
1026 #define ERROR_CANT_REMOVE_DEVINST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x232)
1027 #define ERROR_INVALID_TARGET (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x233)
1028 #define ERROR_DRIVER_NONNATIVE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x234)
1029 #define ERROR_IN_WOW64 (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x235)
1030 #define ERROR_SET_SYSTEM_RESTORE_POINT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x236)
1031 #define ERROR_INCORRECTLY_COPIED_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x237)
1032 #define ERROR_SCE_DISABLED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x238)
1033 #define ERROR_UNKNOWN_EXCEPTION (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x239)
1034 #define ERROR_PNP_REGISTRY_ERROR (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x23A)
1035 #define ERROR_REMOTE_REQUEST_UNSUPPORTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x23B)
1036 #define ERROR_NOT_AN_INSTALLED_OEM_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x23C)
1037 #define ERROR_INF_IN_USE_BY_DEVICES (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x23D)
1038 #define ERROR_DI_FUNCTION_OBSOLETE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x23E)
1039 #define ERROR_NO_AUTHENTICODE_CATALOG (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x23F)
1040 #define ERROR_AUTHENTICODE_DISALLOWED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x240)
1041 #define ERROR_AUTHENTICODE_TRUSTED_PUBLISHER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x241)
1042 #define ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x242)
1043 #define ERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x243)
1044 #define ERROR_SIGNATURE_OSATTRIBUTE_MISMATCH (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x244)
1045 #define ERROR_ONLY_VALIDATE_VIA_AUTHENTICODE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x245)
1046 #define ERROR_UNRECOVERABLE_STACK_OVERFLOW (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x300)
1047 #define EXCEPTION_SPAPI_UNRECOVERABLE_STACK_OVERFLOW ERROR_UNRECOVERABLE_STACK_OVERFLOW
1048 #define ERROR_NO_DEFAULT_INTERFACE_DEVICE ERROR_NO_DEFAULT_DEVICE_INTERFACE
1049 #define ERROR_INTERFACE_DEVICE_ACTIVE ERROR_DEVICE_INTERFACE_ACTIVE
1050 #define ERROR_INTERFACE_DEVICE_REMOVED ERROR_DEVICE_INTERFACE_REMOVED
1051 #define ERROR_NO_SUCH_INTERFACE_DEVICE ERROR_NO_SUCH_DEVICE_INTERFACE
1052 #define ERROR_NOT_INSTALLED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x1000)
1053 
1054   WINSETUPAPI WINBOOL WINAPI SetupGetInfInformationA(LPCVOID InfSpec,DWORD SearchControl,PSP_INF_INFORMATION ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
1055   WINSETUPAPI WINBOOL WINAPI SetupGetInfInformationW(LPCVOID InfSpec,DWORD SearchControl,PSP_INF_INFORMATION ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
1056 
1057 #define INFINFO_INF_SPEC_IS_HINF 1
1058 #define INFINFO_INF_NAME_IS_ABSOLUTE 2
1059 #define INFINFO_DEFAULT_SEARCH 3
1060 #define INFINFO_REVERSE_DEFAULT_SEARCH 4
1061 #define INFINFO_INF_PATH_LIST_SEARCH 5
1062 
1063 #define SetupGetInfInformation __MINGW_NAME_AW(SetupGetInfInformation)
1064 #define SetupQueryInfFileInformation __MINGW_NAME_AW(SetupQueryInfFileInformation)
1065 #define SetupQueryInfOriginalFileInformation __MINGW_NAME_AW(SetupQueryInfOriginalFileInformation)
1066 #define SetupQueryInfVersionInformation __MINGW_NAME_AW(SetupQueryInfVersionInformation)
1067 #define SetupGetInfFileList __MINGW_NAME_AW(SetupGetInfFileList)
1068 #define SetupOpenInfFile __MINGW_NAME_AW(SetupOpenInfFile)
1069 #define SetupOpenAppendInfFile __MINGW_NAME_AW(SetupOpenAppendInfFile)
1070 #define SetupFindFirstLine __MINGW_NAME_AW(SetupFindFirstLine)
1071 #define SetupFindNextMatchLine __MINGW_NAME_AW(SetupFindNextMatchLine)
1072 #define SetupGetLineByIndex __MINGW_NAME_AW(SetupGetLineByIndex)
1073 #define SetupGetLineCount __MINGW_NAME_AW(SetupGetLineCount)
1074 #define SetupGetLineText __MINGW_NAME_AW(SetupGetLineText)
1075 #define SetupGetStringField __MINGW_NAME_AW(SetupGetStringField)
1076 #define SetupGetMultiSzField __MINGW_NAME_AW(SetupGetMultiSzField)
1077 #define SetupGetFileCompressionInfo __MINGW_NAME_AW(SetupGetFileCompressionInfo)
1078 #define SetupGetFileCompressionInfoEx __MINGW_NAME_AW(SetupGetFileCompressionInfoEx)
1079 #define SetupDecompressOrCopyFile __MINGW_NAME_AW(SetupDecompressOrCopyFile)
1080 #define SetupGetSourceFileLocation __MINGW_NAME_AW(SetupGetSourceFileLocation)
1081 #define SetupGetSourceFileSize __MINGW_NAME_AW(SetupGetSourceFileSize)
1082 #define SetupGetTargetPath __MINGW_NAME_AW(SetupGetTargetPath)
1083 #define SetupSetSourceList __MINGW_NAME_AW(SetupSetSourceList)
1084 #define SetupAddToSourceList __MINGW_NAME_AW(SetupAddToSourceList)
1085 #define SetupRemoveFromSourceList __MINGW_NAME_AW(SetupRemoveFromSourceList)
1086 #define SetupQuerySourceList __MINGW_NAME_AW(SetupQuerySourceList)
1087 #define SetupFreeSourceList __MINGW_NAME_AW(SetupFreeSourceList)
1088 #define SetupPromptForDisk __MINGW_NAME_AW(SetupPromptForDisk)
1089 #define SetupCopyError __MINGW_NAME_AW(SetupCopyError)
1090 #define SetupRenameError __MINGW_NAME_AW(SetupRenameError)
1091 #define SetupDeleteError __MINGW_NAME_AW(SetupDeleteError)
1092 #define SetupBackupError __MINGW_NAME_AW(SetupBackupError)
1093 
1094 #define SRCLIST_TEMPORARY 0x00000001
1095 #define SRCLIST_NOBROWSE 0x00000002
1096 #define SRCLIST_SYSTEM 0x00000010
1097 #define SRCLIST_USER 0x00000020
1098 #define SRCLIST_SYSIFADMIN 0x00000040
1099 #define SRCLIST_SUBDIRS 0x00000100
1100 #define SRCLIST_APPEND 0x00000200
1101 #define SRCLIST_NOSTRIPPLATFORM 0x00000400
1102 
1103 #define FILE_COMPRESSION_NONE 0
1104 #define FILE_COMPRESSION_WINLZA 1
1105 #define FILE_COMPRESSION_MSZIP 2
1106 #define FILE_COMPRESSION_NTCAB 3
1107 
1108   WINSETUPAPI WINBOOL WINAPI SetupQueryInfFileInformationA(PSP_INF_INFORMATION InfInformation,UINT InfIndex,PSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
1109   WINSETUPAPI WINBOOL WINAPI SetupQueryInfFileInformationW(PSP_INF_INFORMATION InfInformation,UINT InfIndex,PWSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
1110   WINSETUPAPI WINBOOL WINAPI SetupQueryInfOriginalFileInformationA(PSP_INF_INFORMATION InfInformation,UINT InfIndex,PSP_ALTPLATFORM_INFO AlternatePlatformInfo,PSP_ORIGINAL_FILE_INFO_A OriginalFileInfo);
1111   WINSETUPAPI WINBOOL WINAPI SetupQueryInfOriginalFileInformationW(PSP_INF_INFORMATION InfInformation,UINT InfIndex,PSP_ALTPLATFORM_INFO AlternatePlatformInfo,PSP_ORIGINAL_FILE_INFO_W OriginalFileInfo);
1112   WINSETUPAPI WINBOOL WINAPI SetupQueryInfVersionInformationA(PSP_INF_INFORMATION InfInformation,UINT InfIndex,PCSTR Key,PSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
1113   WINSETUPAPI WINBOOL WINAPI SetupQueryInfVersionInformationW(PSP_INF_INFORMATION InfInformation,UINT InfIndex,PCWSTR Key,PWSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
1114   WINSETUPAPI WINBOOL WINAPI SetupGetInfFileListA(PCSTR DirectoryPath,DWORD InfStyle,PSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
1115   WINSETUPAPI WINBOOL WINAPI SetupGetInfFileListW(PCWSTR DirectoryPath,DWORD InfStyle,PWSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
1116   WINSETUPAPI HINF WINAPI SetupOpenInfFileW(PCWSTR FileName,PCWSTR InfClass,DWORD InfStyle,PUINT ErrorLine);
1117   WINSETUPAPI HINF WINAPI SetupOpenInfFileA(PCSTR FileName,PCSTR InfClass,DWORD InfStyle,PUINT ErrorLine);
1118   WINSETUPAPI HINF WINAPI SetupOpenMasterInf(VOID);
1119   WINSETUPAPI WINBOOL WINAPI SetupOpenAppendInfFileW(PCWSTR FileName,HINF InfHandle,PUINT ErrorLine);
1120   WINSETUPAPI WINBOOL WINAPI SetupOpenAppendInfFileA(PCSTR FileName,HINF InfHandle,PUINT ErrorLine);
1121   WINSETUPAPI VOID WINAPI SetupCloseInfFile(HINF InfHandle);
1122   WINSETUPAPI WINBOOL WINAPI SetupFindFirstLineA(HINF InfHandle,PCSTR Section,PCSTR Key,PINFCONTEXT Context);
1123   WINSETUPAPI WINBOOL WINAPI SetupFindFirstLineW(HINF InfHandle,PCWSTR Section,PCWSTR Key,PINFCONTEXT Context);
1124   WINSETUPAPI WINBOOL WINAPI SetupFindNextLine(PINFCONTEXT ContextIn,PINFCONTEXT ContextOut);
1125   WINSETUPAPI WINBOOL WINAPI SetupFindNextMatchLineA(PINFCONTEXT ContextIn,PCSTR Key,PINFCONTEXT ContextOut);
1126   WINSETUPAPI WINBOOL WINAPI SetupFindNextMatchLineW(PINFCONTEXT ContextIn,PCWSTR Key,PINFCONTEXT ContextOut);
1127   WINSETUPAPI WINBOOL WINAPI SetupGetLineByIndexA(HINF InfHandle,PCSTR Section,DWORD Index,PINFCONTEXT Context);
1128   WINSETUPAPI WINBOOL WINAPI SetupGetLineByIndexW(HINF InfHandle,PCWSTR Section,DWORD Index,PINFCONTEXT Context);
1129   WINSETUPAPI LONG WINAPI SetupGetLineCountA(HINF InfHandle,PCSTR Section);
1130   WINSETUPAPI LONG WINAPI SetupGetLineCountW(HINF InfHandle,PCWSTR Section);
1131   WINSETUPAPI WINBOOL WINAPI SetupGetLineTextA(PINFCONTEXT Context,HINF InfHandle,PCSTR Section,PCSTR Key,PSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
1132   WINSETUPAPI WINBOOL WINAPI SetupGetLineTextW(PINFCONTEXT Context,HINF InfHandle,PCWSTR Section,PCWSTR Key,PWSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
1133   WINSETUPAPI DWORD WINAPI SetupGetFieldCount(PINFCONTEXT Context);
1134   WINSETUPAPI WINBOOL WINAPI SetupGetStringFieldA(PINFCONTEXT Context,DWORD FieldIndex,PSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
1135   WINSETUPAPI WINBOOL WINAPI SetupGetStringFieldW(PINFCONTEXT Context,DWORD FieldIndex,PWSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
1136   WINSETUPAPI WINBOOL WINAPI SetupGetIntField(PINFCONTEXT Context,DWORD FieldIndex,PINT IntegerValue);
1137   WINSETUPAPI WINBOOL WINAPI SetupGetMultiSzFieldA(PINFCONTEXT Context,DWORD FieldIndex,PSTR ReturnBuffer,DWORD ReturnBufferSize,LPDWORD RequiredSize);
1138   WINSETUPAPI WINBOOL WINAPI SetupGetMultiSzFieldW(PINFCONTEXT Context,DWORD FieldIndex,PWSTR ReturnBuffer,DWORD ReturnBufferSize,LPDWORD RequiredSize);
1139   WINSETUPAPI WINBOOL WINAPI SetupGetBinaryField(PINFCONTEXT Context,DWORD FieldIndex,PBYTE ReturnBuffer,DWORD ReturnBufferSize,LPDWORD RequiredSize);
1140   WINSETUPAPI DWORD WINAPI SetupGetFileCompressionInfoA(PCSTR SourceFileName,PSTR *ActualSourceFileName,PDWORD SourceFileSize,PDWORD TargetFileSize,PUINT CompressionType);
1141   WINSETUPAPI DWORD WINAPI SetupGetFileCompressionInfoW(PCWSTR SourceFileName,PWSTR *ActualSourceFileName,PDWORD SourceFileSize,PDWORD TargetFileSize,PUINT CompressionType);
1142   WINSETUPAPI WINBOOL WINAPI SetupGetFileCompressionInfoExA(PCSTR SourceFileName,PSTR ActualSourceFileNameBuffer,DWORD ActualSourceFileNameBufferLen,PDWORD RequiredBufferLen,PDWORD SourceFileSize,PDWORD TargetFileSize,PUINT CompressionType);
1143   WINSETUPAPI WINBOOL WINAPI SetupGetFileCompressionInfoExW(PCWSTR SourceFileName,PWSTR ActualSourceFileNameBuffer,DWORD ActualSourceFileNameBufferLen,PDWORD RequiredBufferLen,PDWORD SourceFileSize,PDWORD TargetFileSize,PUINT CompressionType);
1144   WINSETUPAPI DWORD WINAPI SetupDecompressOrCopyFileA(PCSTR SourceFileName,PCSTR TargetFileName,PUINT CompressionType);
1145   WINSETUPAPI DWORD WINAPI SetupDecompressOrCopyFileW(PCWSTR SourceFileName,PCWSTR TargetFileName,PUINT CompressionType);
1146   WINSETUPAPI WINBOOL WINAPI SetupGetSourceFileLocationA(HINF InfHandle,PINFCONTEXT InfContext,PCSTR FileName,PUINT SourceId,PSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
1147   WINSETUPAPI WINBOOL WINAPI SetupGetSourceFileLocationW(HINF InfHandle,PINFCONTEXT InfContext,PCWSTR FileName,PUINT SourceId,PWSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
1148   WINSETUPAPI WINBOOL WINAPI SetupGetSourceFileSizeA(HINF InfHandle,PINFCONTEXT InfContext,PCSTR FileName,PCSTR Section,PDWORD FileSize,UINT RoundingFactor);
1149   WINSETUPAPI WINBOOL WINAPI SetupGetSourceFileSizeW(HINF InfHandle,PINFCONTEXT InfContext,PCWSTR FileName,PCWSTR Section,PDWORD FileSize,UINT RoundingFactor);
1150   WINSETUPAPI WINBOOL WINAPI SetupGetTargetPathA(HINF InfHandle,PINFCONTEXT InfContext,PCSTR Section,PSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
1151   WINSETUPAPI WINBOOL WINAPI SetupGetTargetPathW(HINF InfHandle,PINFCONTEXT InfContext,PCWSTR Section,PWSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
1152   WINSETUPAPI WINBOOL WINAPI SetupSetSourceListA(DWORD Flags,PCSTR *SourceList,UINT SourceCount);
1153   WINSETUPAPI WINBOOL WINAPI SetupSetSourceListW(DWORD Flags,PCWSTR *SourceList,UINT SourceCount);
1154   WINSETUPAPI WINBOOL WINAPI SetupCancelTemporarySourceList(VOID);
1155   WINSETUPAPI WINBOOL WINAPI SetupAddToSourceListA(DWORD Flags,PCSTR Source);
1156   WINSETUPAPI WINBOOL WINAPI SetupAddToSourceListW(DWORD Flags,PCWSTR Source);
1157   WINSETUPAPI WINBOOL WINAPI SetupRemoveFromSourceListA(DWORD Flags,PCSTR Source);
1158   WINSETUPAPI WINBOOL WINAPI SetupRemoveFromSourceListW(DWORD Flags,PCWSTR Source);
1159   WINSETUPAPI WINBOOL WINAPI SetupQuerySourceListA(DWORD Flags,PCSTR **List,PUINT Count);
1160   WINSETUPAPI WINBOOL WINAPI SetupQuerySourceListW(DWORD Flags,PCWSTR **List,PUINT Count);
1161   WINSETUPAPI WINBOOL WINAPI SetupFreeSourceListA(PCSTR **List,UINT Count);
1162   WINSETUPAPI WINBOOL WINAPI SetupFreeSourceListW(PCWSTR **List,UINT Count);
1163   WINSETUPAPI UINT WINAPI SetupPromptForDiskA(HWND hwndParent,PCSTR DialogTitle,PCSTR DiskName,PCSTR PathToSource,PCSTR FileSought,PCSTR TagFile,DWORD DiskPromptStyle,PSTR PathBuffer,DWORD PathBufferSize,PDWORD PathRequiredSize);
1164   WINSETUPAPI UINT WINAPI SetupPromptForDiskW(HWND hwndParent,PCWSTR DialogTitle,PCWSTR DiskName,PCWSTR PathToSource,PCWSTR FileSought,PCWSTR TagFile,DWORD DiskPromptStyle,PWSTR PathBuffer,DWORD PathBufferSize,PDWORD PathRequiredSize);
1165   WINSETUPAPI UINT WINAPI SetupCopyErrorA(HWND hwndParent,PCSTR DialogTitle,PCSTR DiskName,PCSTR PathToSource,PCSTR SourceFile,PCSTR TargetPathFile,UINT Win32ErrorCode,DWORD Style,PSTR PathBuffer,DWORD PathBufferSize,PDWORD PathRequiredSize);
1166   WINSETUPAPI UINT WINAPI SetupCopyErrorW(HWND hwndParent,PCWSTR DialogTitle,PCWSTR DiskName,PCWSTR PathToSource,PCWSTR SourceFile,PCWSTR TargetPathFile,UINT Win32ErrorCode,DWORD Style,PWSTR PathBuffer,DWORD PathBufferSize,PDWORD PathRequiredSize);
1167   WINSETUPAPI UINT WINAPI SetupRenameErrorA(HWND hwndParent,PCSTR DialogTitle,PCSTR SourceFile,PCSTR TargetFile,UINT Win32ErrorCode,DWORD Style);
1168   WINSETUPAPI UINT WINAPI SetupRenameErrorW(HWND hwndParent,PCWSTR DialogTitle,PCWSTR SourceFile,PCWSTR TargetFile,UINT Win32ErrorCode,DWORD Style);
1169   WINSETUPAPI UINT WINAPI SetupDeleteErrorA(HWND hwndParent,PCSTR DialogTitle,PCSTR File,UINT Win32ErrorCode,DWORD Style);
1170   WINSETUPAPI UINT WINAPI SetupDeleteErrorW(HWND hwndParent,PCWSTR DialogTitle,PCWSTR File,UINT Win32ErrorCode,DWORD Style);
1171   WINSETUPAPI UINT WINAPI SetupBackupErrorA(HWND hwndParent,PCSTR DialogTitle,PCSTR SourceFile,PCSTR TargetFile,UINT Win32ErrorCode,DWORD Style);
1172   WINSETUPAPI UINT WINAPI SetupBackupErrorW(HWND hwndParent,PCWSTR DialogTitle,PCWSTR SourceFile,PCWSTR TargetFile,UINT Win32ErrorCode,DWORD Style);
1173 
1174 #define IDF_NOBROWSE 0x00000001
1175 #define IDF_NOSKIP 0x00000002
1176 #define IDF_NODETAILS 0x00000004
1177 #define IDF_NOCOMPRESSED 0x00000008
1178 #define IDF_CHECKFIRST 0x00000100
1179 #define IDF_NOBEEP 0x00000200
1180 #define IDF_NOFOREGROUND 0x00000400
1181 #define IDF_WARNIFSKIP 0x00000800
1182 
1183 #define IDF_NOREMOVABLEMEDIAPROMPT 0x00001000
1184 #define IDF_USEDISKNAMEASPROMPT 0x00002000
1185 #define IDF_OEMDISK 0x80000000
1186 
1187 #define DPROMPT_SUCCESS 0
1188 #define DPROMPT_CANCEL 1
1189 #define DPROMPT_SKIPFILE 2
1190 #define DPROMPT_BUFFERTOOSMALL 3
1191 #define DPROMPT_OUTOFMEMORY 4
1192 
1193 #define SETDIRID_NOT_FULL_PATH 0x00000001
1194 
1195 #define SRCINFO_PATH 1
1196 #define SRCINFO_TAGFILE 2
1197 #define SRCINFO_DESCRIPTION 3
1198 #define SRCINFO_FLAGS 4
1199 #define SRCINFO_TAGFILE2 5
1200 
1201 #define SRC_FLAGS_CABFILE (0x0010)
1202 
1203 #define SetupSetDirectoryId __MINGW_NAME_AW(SetupSetDirectoryId)
1204 #define SetupSetDirectoryIdEx __MINGW_NAME_AW(SetupSetDirectoryIdEx)
1205 #define SetupGetSourceInfo __MINGW_NAME_AW(SetupGetSourceInfo)
1206 #define SetupInstallFile __MINGW_NAME_AW(SetupInstallFile)
1207 #define SetupInstallFileEx __MINGW_NAME_AW(SetupInstallFileEx)
1208 
1209   WINSETUPAPI WINBOOL WINAPI SetupSetDirectoryIdA(HINF InfHandle,DWORD Id,PCSTR Directory);
1210   WINSETUPAPI WINBOOL WINAPI SetupSetDirectoryIdW(HINF InfHandle,DWORD Id,PCWSTR Directory);
1211   WINSETUPAPI WINBOOL WINAPI SetupSetDirectoryIdExA(HINF InfHandle,DWORD Id,PCSTR Directory,DWORD Flags,DWORD Reserved1,PVOID Reserved2);
1212   WINSETUPAPI WINBOOL WINAPI SetupSetDirectoryIdExW(HINF InfHandle,DWORD Id,PCWSTR Directory,DWORD Flags,DWORD Reserved1,PVOID Reserved2);
1213   WINSETUPAPI WINBOOL WINAPI SetupGetSourceInfoA(HINF InfHandle,UINT SourceId,UINT InfoDesired,PSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
1214   WINSETUPAPI WINBOOL WINAPI SetupGetSourceInfoW(HINF InfHandle,UINT SourceId,UINT InfoDesired,PWSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
1215   WINSETUPAPI WINBOOL WINAPI SetupInstallFileA(HINF InfHandle,PINFCONTEXT InfContext,PCSTR SourceFile,PCSTR SourcePathRoot,PCSTR DestinationName,DWORD CopyStyle,PSP_FILE_CALLBACK_A CopyMsgHandler,PVOID Context);
1216   WINSETUPAPI WINBOOL WINAPI SetupInstallFileW(HINF InfHandle,PINFCONTEXT InfContext,PCWSTR SourceFile,PCWSTR SourcePathRoot,PCWSTR DestinationName,DWORD CopyStyle,PSP_FILE_CALLBACK_W CopyMsgHandler,PVOID Context);
1217   WINSETUPAPI WINBOOL WINAPI SetupInstallFileExA(HINF InfHandle,PINFCONTEXT InfContext,PCSTR SourceFile,PCSTR SourcePathRoot,PCSTR DestinationName,DWORD CopyStyle,PSP_FILE_CALLBACK_A CopyMsgHandler,PVOID Context,PBOOL FileWasInUse);
1218   WINSETUPAPI WINBOOL WINAPI SetupInstallFileExW(HINF InfHandle,PINFCONTEXT InfContext,PCWSTR SourceFile,PCWSTR SourcePathRoot,PCWSTR DestinationName,DWORD CopyStyle,PSP_FILE_CALLBACK_W CopyMsgHandler,PVOID Context,PBOOL FileWasInUse);
1219 
1220 #define SP_COPY_DELETESOURCE 0x0000001
1221 #define SP_COPY_REPLACEONLY 0x0000002
1222 #define SP_COPY_NEWER 0x0000004
1223 #define SP_COPY_NEWER_OR_SAME SP_COPY_NEWER
1224 #define SP_COPY_NOOVERWRITE 0x0000008
1225 #define SP_COPY_NODECOMP 0x0000010
1226 #define SP_COPY_LANGUAGEAWARE 0x0000020
1227 #define SP_COPY_SOURCE_ABSOLUTE 0x0000040
1228 #define SP_COPY_SOURCEPATH_ABSOLUTE 0x0000080
1229 #define SP_COPY_IN_USE_NEEDS_REBOOT 0x0000100
1230 #define SP_COPY_FORCE_IN_USE 0x0000200
1231 #define SP_COPY_NOSKIP 0x0000400
1232 #define SP_FLAG_CABINETCONTINUATION 0x0000800
1233 #define SP_COPY_FORCE_NOOVERWRITE 0x0001000
1234 #define SP_COPY_FORCE_NEWER 0x0002000
1235 #define SP_COPY_WARNIFSKIP 0x0004000
1236 #define SP_COPY_NOBROWSE 0x0008000
1237 #define SP_COPY_NEWER_ONLY 0x0010000
1238 #define SP_COPY_SOURCE_SIS_MASTER 0x0020000
1239 #define SP_COPY_OEMINF_CATALOG_ONLY 0x0040000
1240 #define SP_COPY_REPLACE_BOOT_FILE 0x0080000
1241 #define SP_COPY_NOPRUNE 0x0100000
1242 #define SP_COPY_OEM_F6_INF 0x0200000
1243 
1244 #define SP_BACKUP_BACKUPPASS 0x00000001
1245 #define SP_BACKUP_DEMANDPASS 0x00000002
1246 #define SP_BACKUP_SPECIAL 0x00000004
1247 #define SP_BACKUP_BOOTFILE 0x00000008
1248 
1249 #define SetupSetFileQueueAlternatePlatform __MINGW_NAME_AW(SetupSetFileQueueAlternatePlatform)
1250 #define SetupQueueDeleteSection __MINGW_NAME_AW(SetupQueueDeleteSection)
1251 #define SetupQueueRename __MINGW_NAME_AW(SetupQueueRename)
1252 #define SetupQueueRenameSection __MINGW_NAME_AW(SetupQueueRenameSection)
1253 #define SetupCommitFileQueue __MINGW_NAME_AW(SetupCommitFileQueue)
1254 #define SetupScanFileQueue __MINGW_NAME_AW(SetupScanFileQueue)
1255 #define SetupSetPlatformPathOverride __MINGW_NAME_AW(SetupSetPlatformPathOverride)
1256 #define SetupQueueCopy __MINGW_NAME_AW(SetupQueueCopy)
1257 #define SetupQueueCopyIndirect __MINGW_NAME_AW(SetupQueueCopyIndirect)
1258 #define SetupQueueDefaultCopy __MINGW_NAME_AW(SetupQueueDefaultCopy)
1259 #define SetupQueueCopySection __MINGW_NAME_AW(SetupQueueCopySection)
1260 #define SetupQueueDelete __MINGW_NAME_AW(SetupQueueDelete)
1261 
1262   WINSETUPAPI HSPFILEQ WINAPI SetupOpenFileQueue(VOID);
1263   WINSETUPAPI WINBOOL WINAPI SetupCloseFileQueue(HSPFILEQ QueueHandle);
1264   WINSETUPAPI WINBOOL WINAPI SetupSetFileQueueAlternatePlatformA(HSPFILEQ QueueHandle,PSP_ALTPLATFORM_INFO AlternatePlatformInfo,PCSTR AlternateDefaultCatalogFile);
1265   WINSETUPAPI WINBOOL WINAPI SetupSetFileQueueAlternatePlatformW(HSPFILEQ QueueHandle,PSP_ALTPLATFORM_INFO AlternatePlatformInfo,PCWSTR AlternateDefaultCatalogFile);
1266   WINSETUPAPI WINBOOL WINAPI SetupSetPlatformPathOverrideA(PCSTR Override);
1267   WINSETUPAPI WINBOOL WINAPI SetupSetPlatformPathOverrideW(PCWSTR Override);
1268   WINSETUPAPI WINBOOL WINAPI SetupQueueCopyA(HSPFILEQ QueueHandle,PCSTR SourceRootPath,PCSTR SourcePath,PCSTR SourceFilename,PCSTR SourceDescription,PCSTR SourceTagfile,PCSTR TargetDirectory,PCSTR TargetFilename,DWORD CopyStyle);
1269   WINSETUPAPI WINBOOL WINAPI SetupQueueCopyW(HSPFILEQ QueueHandle,PCWSTR SourceRootPath,PCWSTR SourcePath,PCWSTR SourceFilename,PCWSTR SourceDescription,PCWSTR SourceTagfile,PCWSTR TargetDirectory,PCWSTR TargetFilename,DWORD CopyStyle);
1270   WINSETUPAPI WINBOOL WINAPI SetupQueueCopyIndirectA(PSP_FILE_COPY_PARAMS_A CopyParams);
1271   WINSETUPAPI WINBOOL WINAPI SetupQueueCopyIndirectW(PSP_FILE_COPY_PARAMS_W CopyParams);
1272   WINSETUPAPI WINBOOL WINAPI SetupQueueDefaultCopyA(HSPFILEQ QueueHandle,HINF InfHandle,PCSTR SourceRootPath,PCSTR SourceFilename,PCSTR TargetFilename,DWORD CopyStyle);
1273   WINSETUPAPI WINBOOL WINAPI SetupQueueDefaultCopyW(HSPFILEQ QueueHandle,HINF InfHandle,PCWSTR SourceRootPath,PCWSTR SourceFilename,PCWSTR TargetFilename,DWORD CopyStyle);
1274   WINSETUPAPI WINBOOL WINAPI SetupQueueCopySectionA(HSPFILEQ QueueHandle,PCSTR SourceRootPath,HINF InfHandle,HINF ListInfHandle,PCSTR Section,DWORD CopyStyle);
1275   WINSETUPAPI WINBOOL WINAPI SetupQueueCopySectionW(HSPFILEQ QueueHandle,PCWSTR SourceRootPath,HINF InfHandle,HINF ListInfHandle,PCWSTR Section,DWORD CopyStyle);
1276   WINSETUPAPI WINBOOL WINAPI SetupQueueDeleteA(HSPFILEQ QueueHandle,PCSTR PathPart1,PCSTR PathPart2);
1277   WINSETUPAPI WINBOOL WINAPI SetupQueueDeleteW(HSPFILEQ QueueHandle,PCWSTR PathPart1,PCWSTR PathPart2);
1278   WINSETUPAPI WINBOOL WINAPI SetupQueueDeleteSectionA(HSPFILEQ QueueHandle,HINF InfHandle,HINF ListInfHandle,PCSTR Section);
1279   WINSETUPAPI WINBOOL WINAPI SetupQueueDeleteSectionW(HSPFILEQ QueueHandle,HINF InfHandle,HINF ListInfHandle,PCWSTR Section);
1280   WINSETUPAPI WINBOOL WINAPI SetupQueueRenameA(HSPFILEQ QueueHandle,PCSTR SourcePath,PCSTR SourceFilename,PCSTR TargetPath,PCSTR TargetFilename);
1281   WINSETUPAPI WINBOOL WINAPI SetupQueueRenameW(HSPFILEQ QueueHandle,PCWSTR SourcePath,PCWSTR SourceFilename,PCWSTR TargetPath,PCWSTR TargetFilename);
1282   WINSETUPAPI WINBOOL WINAPI SetupQueueRenameSectionA(HSPFILEQ QueueHandle,HINF InfHandle,HINF ListInfHandle,PCSTR Section);
1283   WINSETUPAPI WINBOOL WINAPI SetupQueueRenameSectionW(HSPFILEQ QueueHandle,HINF InfHandle,HINF ListInfHandle,PCWSTR Section);
1284   WINSETUPAPI WINBOOL WINAPI SetupCommitFileQueueA(HWND Owner,HSPFILEQ QueueHandle,PSP_FILE_CALLBACK_A MsgHandler,PVOID Context);
1285   WINSETUPAPI WINBOOL WINAPI SetupCommitFileQueueW(HWND Owner,HSPFILEQ QueueHandle,PSP_FILE_CALLBACK_W MsgHandler,PVOID Context);
1286   WINSETUPAPI WINBOOL WINAPI SetupScanFileQueueA(HSPFILEQ FileQueue,DWORD Flags,HWND Window,PSP_FILE_CALLBACK_A CallbackRoutine,PVOID CallbackContext,PDWORD Result);
1287   WINSETUPAPI WINBOOL WINAPI SetupScanFileQueueW(HSPFILEQ FileQueue,DWORD Flags,HWND Window,PSP_FILE_CALLBACK_W CallbackRoutine,PVOID CallbackContext,PDWORD Result);
1288 
1289 #define SPQ_SCAN_FILE_PRESENCE 0x00000001
1290 #define SPQ_SCAN_FILE_VALIDITY 0x00000002
1291 #define SPQ_SCAN_USE_CALLBACK 0x00000004
1292 #define SPQ_SCAN_USE_CALLBACKEX 0x00000008
1293 #define SPQ_SCAN_INFORM_USER 0x00000010
1294 #define SPQ_SCAN_PRUNE_COPY_QUEUE 0x00000020
1295 
1296 #define SPQ_SCAN_USE_CALLBACK_SIGNERINFO 0x00000040
1297 #define SPQ_SCAN_PRUNE_DELREN 0x00000080
1298 
1299 #define SPQ_DELAYED_COPY 0x00000001
1300 
1301   WINSETUPAPI WINBOOL WINAPI SetupGetFileQueueCount(HSPFILEQ FileQueue,UINT SubQueueFileOp,PUINT NumOperations);
1302   WINSETUPAPI WINBOOL WINAPI SetupGetFileQueueFlags(HSPFILEQ FileQueue,PDWORD Flags);
1303   WINSETUPAPI WINBOOL WINAPI SetupSetFileQueueFlags(HSPFILEQ FileQueue,DWORD FlagMask,DWORD Flags);
1304 
1305 #define SPQ_FLAG_BACKUP_AWARE 0x00000001
1306 #define SPQ_FLAG_ABORT_IF_UNSIGNED 0x00000002
1307 #define SPQ_FLAG_FILES_MODIFIED 0x00000004
1308 #define SPQ_FLAG_VALID 0x00000007
1309 
1310 #define SPOST_NONE 0
1311 #define SPOST_PATH 1
1312 #define SPOST_URL 2
1313 #define SPOST_MAX 3
1314 
1315 #define SetupCopyOEMInf __MINGW_NAME_AW(SetupCopyOEMInf)
1316 
1317   WINSETUPAPI WINBOOL WINAPI SetupCopyOEMInfA(PCSTR SourceInfFileName,PCSTR OEMSourceMediaLocation,DWORD OEMSourceMediaType,DWORD CopyStyle,PSTR DestinationInfFileName,DWORD DestinationInfFileNameSize,PDWORD RequiredSize,PSTR *DestinationInfFileNameComponent);
1318   WINSETUPAPI WINBOOL WINAPI SetupCopyOEMInfW(PCWSTR SourceInfFileName,PCWSTR OEMSourceMediaLocation,DWORD OEMSourceMediaType,DWORD CopyStyle,PWSTR DestinationInfFileName,DWORD DestinationInfFileNameSize,PDWORD RequiredSize,PWSTR *DestinationInfFileNameComponent);
1319 
1320 #define SUOI_FORCEDELETE 0x00000001
1321 
1322 #define SetupUninstallOEMInf __MINGW_NAME_AW(SetupUninstallOEMInf)
1323 #define SetupCreateDiskSpaceList __MINGW_NAME_AW(SetupCreateDiskSpaceList)
1324 
1325   WINSETUPAPI WINBOOL WINAPI SetupUninstallOEMInfA(PCSTR InfFileName,DWORD Flags,PVOID Reserved);
1326   WINSETUPAPI WINBOOL WINAPI SetupUninstallOEMInfW(PCWSTR InfFileName,DWORD Flags,PVOID Reserved);
1327   WINSETUPAPI WINBOOL WINAPI SetupUninstallNewlyCopiedInfs(HSPFILEQ FileQueue,DWORD Flags,PVOID Reserved);
1328   WINSETUPAPI HDSKSPC WINAPI SetupCreateDiskSpaceListA(PVOID Reserved1,DWORD Reserved2,UINT Flags);
1329   WINSETUPAPI HDSKSPC WINAPI SetupCreateDiskSpaceListW(PVOID Reserved1,DWORD Reserved2,UINT Flags);
1330 
1331 #define SPDSL_IGNORE_DISK 0x00000001
1332 #define SPDSL_DISALLOW_NEGATIVE_ADJUST 0x00000002
1333 
1334 #define SetupDuplicateDiskSpaceList __MINGW_NAME_AW(SetupDuplicateDiskSpaceList)
1335 #define SetupQueryDrivesInDiskSpaceList __MINGW_NAME_AW(SetupQueryDrivesInDiskSpaceList)
1336 #define SetupQuerySpaceRequiredOnDrive __MINGW_NAME_AW(SetupQuerySpaceRequiredOnDrive)
1337 #define SetupAdjustDiskSpaceList __MINGW_NAME_AW(SetupAdjustDiskSpaceList)
1338 #define SetupAddToDiskSpaceList __MINGW_NAME_AW(SetupAddToDiskSpaceList)
1339 #define SetupAddSectionToDiskSpaceList __MINGW_NAME_AW(SetupAddSectionToDiskSpaceList)
1340 #define SetupAddInstallSectionToDiskSpaceList __MINGW_NAME_AW(SetupAddInstallSectionToDiskSpaceList)
1341 #define SetupRemoveFromDiskSpaceList __MINGW_NAME_AW(SetupRemoveFromDiskSpaceList)
1342 #define SetupRemoveSectionFromDiskSpaceList __MINGW_NAME_AW(SetupRemoveSectionFromDiskSpaceList)
1343 #define SetupRemoveInstallSectionFromDiskSpaceList __MINGW_NAME_AW(SetupRemoveInstallSectionFromDiskSpaceList)
1344 #define SetupIterateCabinet __MINGW_NAME_AW(SetupIterateCabinet)
1345 
1346   WINSETUPAPI HDSKSPC WINAPI SetupDuplicateDiskSpaceListA(HDSKSPC DiskSpace,PVOID Reserved1,DWORD Reserved2,UINT Flags);
1347   WINSETUPAPI HDSKSPC WINAPI SetupDuplicateDiskSpaceListW(HDSKSPC DiskSpace,PVOID Reserved1,DWORD Reserved2,UINT Flags);
1348   WINSETUPAPI WINBOOL WINAPI SetupDestroyDiskSpaceList(HDSKSPC DiskSpace);
1349   WINSETUPAPI WINBOOL WINAPI SetupQueryDrivesInDiskSpaceListA(HDSKSPC DiskSpace,PSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
1350   WINSETUPAPI WINBOOL WINAPI SetupQueryDrivesInDiskSpaceListW(HDSKSPC DiskSpace,PWSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
1351   WINSETUPAPI WINBOOL WINAPI SetupQuerySpaceRequiredOnDriveA(HDSKSPC DiskSpace,PCSTR DriveSpec,LONGLONG *SpaceRequired,PVOID Reserved1,UINT Reserved2);
1352   WINSETUPAPI WINBOOL WINAPI SetupQuerySpaceRequiredOnDriveW(HDSKSPC DiskSpace,PCWSTR DriveSpec,LONGLONG *SpaceRequired,PVOID Reserved1,UINT Reserved2);
1353   WINSETUPAPI WINBOOL WINAPI SetupAdjustDiskSpaceListA(HDSKSPC DiskSpace,LPCSTR DriveRoot,LONGLONG Amount,PVOID Reserved1,UINT Reserved2);
1354   WINSETUPAPI WINBOOL WINAPI SetupAdjustDiskSpaceListW(HDSKSPC DiskSpace,LPCWSTR DriveRoot,LONGLONG Amount,PVOID Reserved1,UINT Reserved2);
1355   WINSETUPAPI WINBOOL WINAPI SetupAddToDiskSpaceListA(HDSKSPC DiskSpace,PCSTR TargetFilespec,LONGLONG FileSize,UINT Operation,PVOID Reserved1,UINT Reserved2);
1356   WINSETUPAPI WINBOOL WINAPI SetupAddToDiskSpaceListW(HDSKSPC DiskSpace,PCWSTR TargetFilespec,LONGLONG FileSize,UINT Operation,PVOID Reserved1,UINT Reserved2);
1357   WINSETUPAPI WINBOOL WINAPI SetupAddSectionToDiskSpaceListA(HDSKSPC DiskSpace,HINF InfHandle,HINF ListInfHandle,PCSTR SectionName,UINT Operation,PVOID Reserved1,UINT Reserved2);
1358   WINSETUPAPI WINBOOL WINAPI SetupAddSectionToDiskSpaceListW(HDSKSPC DiskSpace,HINF InfHandle,HINF ListInfHandle,PCWSTR SectionName,UINT Operation,PVOID Reserved1,UINT Reserved2);
1359   WINSETUPAPI WINBOOL WINAPI SetupAddInstallSectionToDiskSpaceListA(HDSKSPC DiskSpace,HINF InfHandle,HINF LayoutInfHandle,PCSTR SectionName,PVOID Reserved1,UINT Reserved2);
1360   WINSETUPAPI WINBOOL WINAPI SetupAddInstallSectionToDiskSpaceListW(HDSKSPC DiskSpace,HINF InfHandle,HINF LayoutInfHandle,PCWSTR SectionName,PVOID Reserved1,UINT Reserved2);
1361   WINSETUPAPI WINBOOL WINAPI SetupRemoveFromDiskSpaceListA(HDSKSPC DiskSpace,PCSTR TargetFilespec,UINT Operation,PVOID Reserved1,UINT Reserved2);
1362   WINSETUPAPI WINBOOL WINAPI SetupRemoveFromDiskSpaceListW(HDSKSPC DiskSpace,PCWSTR TargetFilespec,UINT Operation,PVOID Reserved1,UINT Reserved2);
1363   WINSETUPAPI WINBOOL WINAPI SetupRemoveSectionFromDiskSpaceListA(HDSKSPC DiskSpace,HINF InfHandle,HINF ListInfHandle,PCSTR SectionName,UINT Operation,PVOID Reserved1,UINT Reserved2);
1364   WINSETUPAPI WINBOOL WINAPI SetupRemoveSectionFromDiskSpaceListW(HDSKSPC DiskSpace,HINF InfHandle,HINF ListInfHandle,PCWSTR SectionName,UINT Operation,PVOID Reserved1,UINT Reserved2);
1365   WINSETUPAPI WINBOOL WINAPI SetupRemoveInstallSectionFromDiskSpaceListA(HDSKSPC DiskSpace,HINF InfHandle,HINF LayoutInfHandle,PCSTR SectionName,PVOID Reserved1,UINT Reserved2);
1366   WINSETUPAPI WINBOOL WINAPI SetupRemoveInstallSectionFromDiskSpaceListW(HDSKSPC DiskSpace,HINF InfHandle,HINF LayoutInfHandle,PCWSTR SectionName,PVOID Reserved1,UINT Reserved2);
1367   WINSETUPAPI WINBOOL WINAPI SetupIterateCabinetA(PCSTR CabinetFile,DWORD Reserved,PSP_FILE_CALLBACK_A MsgHandler,PVOID Context);
1368   WINSETUPAPI WINBOOL WINAPI SetupIterateCabinetW(PCWSTR CabinetFile,DWORD Reserved,PSP_FILE_CALLBACK_W MsgHandler,PVOID Context);
1369   WINSETUPAPI INT WINAPI SetupPromptReboot(HSPFILEQ FileQueue,HWND Owner,WINBOOL ScanOnly);
1370 
1371 #define SPFILEQ_FILE_IN_USE 0x00000001
1372 #define SPFILEQ_REBOOT_RECOMMENDED 0x00000002
1373 #define SPFILEQ_REBOOT_IN_PROGRESS 0x00000004
1374 
1375 #define SetupDefaultQueueCallback __MINGW_NAME_AW(SetupDefaultQueueCallback)
1376 
1377   WINSETUPAPI PVOID WINAPI SetupInitDefaultQueueCallback(HWND OwnerWindow);
1378   WINSETUPAPI PVOID WINAPI SetupInitDefaultQueueCallbackEx(HWND OwnerWindow,HWND AlternateProgressWindow,UINT ProgressMessage,DWORD Reserved1,PVOID Reserved2);
1379   WINSETUPAPI VOID WINAPI SetupTermDefaultQueueCallback(PVOID Context);
1380   WINSETUPAPI UINT WINAPI SetupDefaultQueueCallbackA(PVOID Context,UINT Notification,UINT_PTR Param1,UINT_PTR Param2);
1381   WINSETUPAPI UINT WINAPI SetupDefaultQueueCallbackW(PVOID Context,UINT Notification,UINT_PTR Param1,UINT_PTR Param2);
1382 
1383 #define FLG_ADDREG_DELREG_BIT (0x00008000)
1384 #define FLG_ADDREG_BINVALUETYPE (0x00000001)
1385 #define FLG_ADDREG_NOCLOBBER (0x00000002)
1386 #define FLG_ADDREG_DELVAL (0x00000004)
1387 #define FLG_ADDREG_APPEND (0x00000008)
1388 #define FLG_ADDREG_KEYONLY (0x00000010)
1389 #define FLG_ADDREG_OVERWRITEONLY (0x00000020)
1390 #define FLG_ADDREG_64BITKEY (0x00001000)
1391 #define FLG_ADDREG_KEYONLY_COMMON (0x00002000)
1392 #define FLG_ADDREG_32BITKEY (0x00004000)
1393 #define FLG_ADDREG_TYPE_MASK (0xFFFF0000 | FLG_ADDREG_BINVALUETYPE)
1394 #define FLG_ADDREG_TYPE_SZ (0x00000000)
1395 #define FLG_ADDREG_TYPE_MULTI_SZ (0x00010000)
1396 #define FLG_ADDREG_TYPE_EXPAND_SZ (0x00020000)
1397 #define FLG_ADDREG_TYPE_BINARY (0x00000000 | FLG_ADDREG_BINVALUETYPE)
1398 #define FLG_ADDREG_TYPE_DWORD (0x00010000 | FLG_ADDREG_BINVALUETYPE)
1399 #define FLG_ADDREG_TYPE_NONE (0x00020000 | FLG_ADDREG_BINVALUETYPE)
1400 
1401 #define FLG_DELREG_VALUE (0x00000000)
1402 
1403 #define FLG_DELREG_TYPE_MASK FLG_ADDREG_TYPE_MASK
1404 #define FLG_DELREG_TYPE_SZ FLG_ADDREG_TYPE_SZ
1405 #define FLG_DELREG_TYPE_MULTI_SZ FLG_ADDREG_TYPE_MULTI_SZ
1406 #define FLG_DELREG_TYPE_EXPAND_SZ FLG_ADDREG_TYPE_EXPAND_SZ
1407 #define FLG_DELREG_TYPE_BINARY FLG_ADDREG_TYPE_BINARY
1408 #define FLG_DELREG_TYPE_DWORD FLG_ADDREG_TYPE_DWORD
1409 #define FLG_DELREG_TYPE_NONE FLG_ADDREG_TYPE_NONE
1410 #define FLG_DELREG_64BITKEY FLG_ADDREG_64BITKEY
1411 #define FLG_DELREG_KEYONLY_COMMON FLG_ADDREG_KEYONLY_COMMON
1412 #define FLG_DELREG_32BITKEY FLG_ADDREG_32BITKEY
1413 
1414 #define FLG_DELREG_OPERATION_MASK (0x000000FE)
1415 #define FLG_DELREG_MULTI_SZ_DELSTRING (FLG_DELREG_TYPE_MULTI_SZ | FLG_ADDREG_DELREG_BIT | 0x00000002)
1416 
1417 #define FLG_BITREG_CLEARBITS (0x00000000)
1418 #define FLG_BITREG_SETBITS (0x00000001)
1419 
1420 #define FLG_BITREG_64BITKEY (0x00001000)
1421 #define FLG_BITREG_32BITKEY (0x00004000)
1422 #define FLG_INI2REG_64BITKEY (0x00001000)
1423 #define FLG_INI2REG_32BITKEY (0x00004000)
1424 #define FLG_REGSVR_DLLREGISTER (0x00000001)
1425 #define FLG_REGSVR_DLLINSTALL (0x00000002)
1426 
1427 #define FLG_PROFITEM_CURRENTUSER (0x00000001)
1428 #define FLG_PROFITEM_DELETE (0x00000002)
1429 #define FLG_PROFITEM_GROUP (0x00000004)
1430 #define FLG_PROFITEM_CSIDL (0x00000008)
1431 
1432 #define SetupInstallFromInfSection __MINGW_NAME_AW(SetupInstallFromInfSection)
1433 
1434   WINSETUPAPI WINBOOL WINAPI SetupInstallFromInfSectionA(HWND Owner,HINF InfHandle,PCSTR SectionName,UINT Flags,HKEY RelativeKeyRoot,PCSTR SourceRootPath,UINT CopyFlags,PSP_FILE_CALLBACK_A MsgHandler,PVOID Context,HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
1435   WINSETUPAPI WINBOOL WINAPI SetupInstallFromInfSectionW(HWND Owner,HINF InfHandle,PCWSTR SectionName,UINT Flags,HKEY RelativeKeyRoot,PCWSTR SourceRootPath,UINT CopyFlags,PSP_FILE_CALLBACK_W MsgHandler,PVOID Context,HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
1436 
1437 #define SPINST_LOGCONFIG 0x00000001
1438 #define SPINST_INIFILES 0x00000002
1439 #define SPINST_REGISTRY 0x00000004
1440 #define SPINST_INI2REG 0x00000008
1441 #define SPINST_FILES 0x00000010
1442 #define SPINST_BITREG 0x00000020
1443 #define SPINST_REGSVR 0x00000040
1444 #define SPINST_UNREGSVR 0x00000080
1445 #define SPINST_PROFILEITEMS 0x00000100
1446 #define SPINST_COPYINF 0x00000200
1447 #define SPINST_ALL 0x000003ff
1448 #define SPINST_SINGLESECTION 0x00010000
1449 #define SPINST_LOGCONFIG_IS_FORCED 0x00020000
1450 #define SPINST_LOGCONFIGS_ARE_OVERRIDES 0x00040000
1451 #define SPINST_REGISTERCALLBACKAWARE 0x00080000
1452 
1453 #define SetupInstallFilesFromInfSection __MINGW_NAME_AW(SetupInstallFilesFromInfSection)
1454 
1455   WINSETUPAPI WINBOOL WINAPI SetupInstallFilesFromInfSectionA(HINF InfHandle,HINF LayoutInfHandle,HSPFILEQ FileQueue,PCSTR SectionName,PCSTR SourceRootPath,UINT CopyFlags);
1456   WINSETUPAPI WINBOOL WINAPI SetupInstallFilesFromInfSectionW(HINF InfHandle,HINF LayoutInfHandle,HSPFILEQ FileQueue,PCWSTR SectionName,PCWSTR SourceRootPath,UINT CopyFlags);
1457 
1458 #define SPSVCINST_TAGTOFRONT (0x00000001)
1459 #define SPSVCINST_ASSOCSERVICE (0x00000002)
1460 #define SPSVCINST_DELETEEVENTLOGENTRY (0x00000004)
1461 #define SPSVCINST_NOCLOBBER_DISPLAYNAME (0x00000008)
1462 #define SPSVCINST_NOCLOBBER_STARTTYPE (0x00000010)
1463 #define SPSVCINST_NOCLOBBER_ERRORCONTROL (0x00000020)
1464 #define SPSVCINST_NOCLOBBER_LOADORDERGROUP (0x00000040)
1465 #define SPSVCINST_NOCLOBBER_DEPENDENCIES (0x00000080)
1466 #define SPSVCINST_NOCLOBBER_DESCRIPTION (0x00000100)
1467 #define SPSVCINST_STOPSERVICE (0x00000200)
1468 #define SPSVCINST_CLOBBER_SECURITY (0x00000400)
1469 
1470 #define SPFILELOG_SYSTEMLOG 0x00000001
1471 #define SPFILELOG_FORCENEW 0x00000002
1472 #define SPFILELOG_QUERYONLY 0x00000004
1473 
1474 #define SPFILELOG_OEMFILE 0x00000001
1475 
1476   typedef PVOID HSPFILELOG;
1477 
1478 #define SetupInstallServicesFromInfSection __MINGW_NAME_AW(SetupInstallServicesFromInfSection)
1479 #define SetupInstallServicesFromInfSectionEx __MINGW_NAME_AW(SetupInstallServicesFromInfSectionEx)
1480 #define InstallHinfSection __MINGW_NAME_AW(InstallHinfSection)
1481 #define SetupInitializeFileLog __MINGW_NAME_AW(SetupInitializeFileLog)
1482 #define SetupLogFile __MINGW_NAME_AW(SetupLogFile)
1483 #define SetupRemoveFileLogEntry __MINGW_NAME_AW(SetupRemoveFileLogEntry)
1484 
1485   WINSETUPAPI WINBOOL WINAPI SetupInstallServicesFromInfSectionA(HINF InfHandle,PCSTR SectionName,DWORD Flags);
1486   WINSETUPAPI WINBOOL WINAPI SetupInstallServicesFromInfSectionW(HINF InfHandle,PCWSTR SectionName,DWORD Flags);
1487   WINSETUPAPI WINBOOL WINAPI SetupInstallServicesFromInfSectionExA(HINF InfHandle,PCSTR SectionName,DWORD Flags,HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PVOID Reserved1,PVOID Reserved2);
1488   WINSETUPAPI WINBOOL WINAPI SetupInstallServicesFromInfSectionExW(HINF InfHandle,PCWSTR SectionName,DWORD Flags,HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PVOID Reserved1,PVOID Reserved2);
1489   VOID WINAPI InstallHinfSectionA(HWND Window,HINSTANCE ModuleHandle,PCSTR CommandLine,INT ShowCommand);
1490   VOID WINAPI InstallHinfSectionW(HWND Window,HINSTANCE ModuleHandle,PCWSTR CommandLine,INT ShowCommand);
1491   WINSETUPAPI HSPFILELOG WINAPI SetupInitializeFileLogA(PCSTR LogFileName,DWORD Flags);
1492   WINSETUPAPI HSPFILELOG WINAPI SetupInitializeFileLogW(PCWSTR LogFileName,DWORD Flags);
1493   WINSETUPAPI WINBOOL WINAPI SetupTerminateFileLog(HSPFILELOG FileLogHandle);
1494   WINSETUPAPI WINBOOL WINAPI SetupLogFileA(HSPFILELOG FileLogHandle,PCSTR LogSectionName,PCSTR SourceFilename,PCSTR TargetFilename,DWORD Checksum,PCSTR DiskTagfile,PCSTR DiskDescription,PCSTR OtherInfo,DWORD Flags);
1495   WINSETUPAPI WINBOOL WINAPI SetupLogFileW(HSPFILELOG FileLogHandle,PCWSTR LogSectionName,PCWSTR SourceFilename,PCWSTR TargetFilename,DWORD Checksum,PCWSTR DiskTagfile,PCWSTR DiskDescription,PCWSTR OtherInfo,DWORD Flags);
1496   WINSETUPAPI WINBOOL WINAPI SetupRemoveFileLogEntryA(HSPFILELOG FileLogHandle,PCSTR LogSectionName,PCSTR TargetFilename);
1497   WINSETUPAPI WINBOOL WINAPI SetupRemoveFileLogEntryW(HSPFILELOG FileLogHandle,PCWSTR LogSectionName,PCWSTR TargetFilename);
1498 
1499   typedef enum {
1500     SetupFileLogSourceFilename,SetupFileLogChecksum,SetupFileLogDiskTagfile,SetupFileLogDiskDescription,SetupFileLogOtherInfo,SetupFileLogMax
1501   } SetupFileLogInfo;
1502 
1503 #define SetupQueryFileLog __MINGW_NAME_AW(SetupQueryFileLog)
1504 
1505   WINSETUPAPI WINBOOL WINAPI SetupQueryFileLogA(HSPFILELOG FileLogHandle,PCSTR LogSectionName,PCSTR TargetFilename,SetupFileLogInfo DesiredInfo,PSTR DataOut,DWORD ReturnBufferSize,PDWORD RequiredSize);
1506   WINSETUPAPI WINBOOL WINAPI SetupQueryFileLogW(HSPFILELOG FileLogHandle,PCWSTR LogSectionName,PCWSTR TargetFilename,SetupFileLogInfo DesiredInfo,PWSTR DataOut,DWORD ReturnBufferSize,PDWORD RequiredSize);
1507 
1508 #define LogSeverity DWORD
1509 #define LogSevInformation 0x00000000
1510 #define LogSevWarning 0x00000001
1511 #define LogSevError 0x00000002
1512 #define LogSevFatalError 0x00000003
1513 #define LogSevMaximum 0x00000004
1514 
1515 #define DICD_GENERATE_ID 0x00000001
1516 #define DICD_INHERIT_CLASSDRVS 0x00000002
1517 
1518 #define DIOD_INHERIT_CLASSDRVS 0x00000002
1519 #define DIOD_CANCEL_REMOVE 0x00000004
1520 
1521 #define DIODI_NO_ADD 0x00000001
1522 
1523 #define SPRDI_FIND_DUPS 0x00000001
1524 
1525 #define SPDIT_NODRIVER 0x00000000
1526 #define SPDIT_CLASSDRIVER 0x00000001
1527 #define SPDIT_COMPATDRIVER 0x00000002
1528 
1529 #define SetupLogError __MINGW_NAME_AW(SetupLogError)
1530 #define SetupGetBackupInformation __MINGW_NAME_AW(SetupGetBackupInformation)
1531 #define SetupPrepareQueueForRestore __MINGW_NAME_AW(SetupPrepareQueueForRestore)
1532 #define SetupDiCreateDeviceInfoListEx __MINGW_NAME_AW(SetupDiCreateDeviceInfoListEx)
1533 #define SetupDiGetDeviceInfoListDetail __MINGW_NAME_AW(SetupDiGetDeviceInfoListDetail)
1534 #define SetupDiCreateDeviceInfo __MINGW_NAME_AW(SetupDiCreateDeviceInfo)
1535 #define SetupDiOpenDeviceInfo __MINGW_NAME_AW(SetupDiOpenDeviceInfo)
1536 #define SetupDiGetDeviceInstanceId __MINGW_NAME_AW(SetupDiGetDeviceInstanceId)
1537 #define SetupDiCreateDeviceInterface __MINGW_NAME_AW(SetupDiCreateDeviceInterface)
1538 #define SetupDiCreateInterfaceDevice __MINGW_NAME_AW(SetupDiCreateDeviceInterface)
1539 #define SetupDiOpenDeviceInterface __MINGW_NAME_AW(SetupDiOpenDeviceInterface)
1540 
1541   WINSETUPAPI WINBOOL WINAPI SetupOpenLog(WINBOOL Erase);
1542   WINSETUPAPI WINBOOL WINAPI SetupLogErrorA(LPCSTR MessageString,LogSeverity Severity);
1543   WINSETUPAPI WINBOOL WINAPI SetupLogErrorW(LPCWSTR MessageString,LogSeverity Severity);
1544   WINSETUPAPI VOID WINAPI SetupCloseLog(VOID);
1545   WINSETUPAPI WINBOOL WINAPI SetupGetBackupInformationA(HSPFILEQ QueueHandle,PSP_BACKUP_QUEUE_PARAMS_A BackupParams);
1546   WINSETUPAPI WINBOOL WINAPI SetupGetBackupInformationW(HSPFILEQ QueueHandle,PSP_BACKUP_QUEUE_PARAMS_W BackupParams);
1547   WINSETUPAPI WINBOOL WINAPI SetupPrepareQueueForRestoreA(HSPFILEQ QueueHandle,PCSTR BackupPath,DWORD RestoreFlags);
1548   WINSETUPAPI WINBOOL WINAPI SetupPrepareQueueForRestoreW(HSPFILEQ QueueHandle,PCWSTR BackupPath,DWORD RestoreFlags);
1549   WINSETUPAPI WINBOOL WINAPI SetupSetNonInteractiveMode(WINBOOL NonInteractiveFlag);
1550   WINSETUPAPI WINBOOL WINAPI SetupGetNonInteractiveMode(VOID);
1551   WINSETUPAPI HDEVINFO WINAPI SetupDiCreateDeviceInfoList(CONST GUID *ClassGuid,HWND hwndParent);
1552   WINSETUPAPI HDEVINFO WINAPI SetupDiCreateDeviceInfoListExA(CONST GUID *ClassGuid,HWND hwndParent,PCSTR MachineName,PVOID Reserved);
1553   WINSETUPAPI HDEVINFO WINAPI SetupDiCreateDeviceInfoListExW(CONST GUID *ClassGuid,HWND hwndParent,PCWSTR MachineName,PVOID Reserved);
1554   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceInfoListClass(HDEVINFO DeviceInfoSet,LPGUID ClassGuid);
1555   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceInfoListDetailA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_LIST_DETAIL_DATA_A DeviceInfoSetDetailData);
1556   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceInfoListDetailW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_LIST_DETAIL_DATA_W DeviceInfoSetDetailData);
1557   WINSETUPAPI WINBOOL WINAPI SetupDiCreateDeviceInfoA(HDEVINFO DeviceInfoSet,PCSTR DeviceName,CONST GUID *ClassGuid,PCSTR DeviceDescription,HWND hwndParent,DWORD CreationFlags,PSP_DEVINFO_DATA DeviceInfoData);
1558   WINSETUPAPI WINBOOL WINAPI SetupDiCreateDeviceInfoW(HDEVINFO DeviceInfoSet,PCWSTR DeviceName,CONST GUID *ClassGuid,PCWSTR DeviceDescription,HWND hwndParent,DWORD CreationFlags,PSP_DEVINFO_DATA DeviceInfoData);
1559   WINSETUPAPI WINBOOL WINAPI SetupDiOpenDeviceInfoA(HDEVINFO DeviceInfoSet,PCSTR DeviceInstanceId,HWND hwndParent,DWORD OpenFlags,PSP_DEVINFO_DATA DeviceInfoData);
1560   WINSETUPAPI WINBOOL WINAPI SetupDiOpenDeviceInfoW(HDEVINFO DeviceInfoSet,PCWSTR DeviceInstanceId,HWND hwndParent,DWORD OpenFlags,PSP_DEVINFO_DATA DeviceInfoData);
1561   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceInstanceIdA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSTR DeviceInstanceId,DWORD DeviceInstanceIdSize,PDWORD RequiredSize);
1562   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceInstanceIdW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PWSTR DeviceInstanceId,DWORD DeviceInstanceIdSize,PDWORD RequiredSize);
1563   WINSETUPAPI WINBOOL WINAPI SetupDiDeleteDeviceInfo(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
1564   WINSETUPAPI WINBOOL WINAPI SetupDiEnumDeviceInfo(HDEVINFO DeviceInfoSet,DWORD MemberIndex,PSP_DEVINFO_DATA DeviceInfoData);
1565   WINSETUPAPI WINBOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO DeviceInfoSet);
1566   WINSETUPAPI WINBOOL WINAPI SetupDiEnumDeviceInterfaces(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,CONST GUID *InterfaceClassGuid,DWORD MemberIndex,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData);
1567 #define SetupDiEnumInterfaceDevice SetupDiEnumDeviceInterfaces
1568   WINSETUPAPI WINBOOL WINAPI SetupDiCreateDeviceInterfaceA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,CONST GUID *InterfaceClassGuid,PCSTR ReferenceString,DWORD CreationFlags,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData);
1569   WINSETUPAPI WINBOOL WINAPI SetupDiCreateDeviceInterfaceW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,CONST GUID *InterfaceClassGuid,PCWSTR ReferenceString,DWORD CreationFlags,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData);
1570 #define SetupDiCreateInterfaceDeviceW SetupDiCreateDeviceInterfaceW
1571 #define SetupDiCreateInterfaceDeviceA SetupDiCreateDeviceInterfaceA
1572   WINSETUPAPI WINBOOL WINAPI SetupDiOpenDeviceInterfaceA(HDEVINFO DeviceInfoSet,PCSTR DevicePath,DWORD OpenFlags,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData);
1573   WINSETUPAPI WINBOOL WINAPI SetupDiOpenDeviceInterfaceW(HDEVINFO DeviceInfoSet,PCWSTR DevicePath,DWORD OpenFlags,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData);
1574 #define SetupDiOpenInterfaceDeviceW SetupDiOpenDeviceInterfaceW
1575 #define SetupDiOpenInterfaceDeviceA SetupDiOpenDeviceInterfaceA
1576 
1577 #define SetupDiOpenInterfaceDevice __MINGW_NAME_AW(SetupDiOpenDeviceInterface)
1578 #define SetupDiGetDeviceInterfaceDetail __MINGW_NAME_AW(SetupDiGetDeviceInterfaceDetail)
1579 #define SetupDiGetInterfaceDeviceDetail __MINGW_NAME_AW(SetupDiGetDeviceInterfaceDetail)
1580 #define SetupDiEnumDriverInfo __MINGW_NAME_AW(SetupDiEnumDriverInfo)
1581 #define SetupDiGetSelectedDriver __MINGW_NAME_AW(SetupDiGetSelectedDriver)
1582 #define SetupDiSetSelectedDriver __MINGW_NAME_AW(SetupDiSetSelectedDriver)
1583 #define SetupDiGetDriverInfoDetail __MINGW_NAME_AW(SetupDiGetDriverInfoDetail)
1584 
1585   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceInterfaceAlias(HDEVINFO DeviceInfoSet,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,CONST GUID *AliasInterfaceClassGuid,PSP_DEVICE_INTERFACE_DATA AliasDeviceInterfaceData);
1586 #define SetupDiGetInterfaceDeviceAlias SetupDiGetDeviceInterfaceAlias
1587   WINSETUPAPI WINBOOL WINAPI SetupDiDeleteDeviceInterfaceData(HDEVINFO DeviceInfoSet,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData);
1588 #define SetupDiDeleteInterfaceDeviceData SetupDiDeleteDeviceInterfaceData
1589   WINSETUPAPI WINBOOL WINAPI SetupDiRemoveDeviceInterface(HDEVINFO DeviceInfoSet,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData);
1590 #define SetupDiRemoveInterfaceDevice SetupDiRemoveDeviceInterface
1591   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceInterfaceDetailA(HDEVINFO DeviceInfoSet,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,PSP_DEVICE_INTERFACE_DETAIL_DATA_A DeviceInterfaceDetailData,DWORD DeviceInterfaceDetailDataSize,PDWORD RequiredSize,PSP_DEVINFO_DATA DeviceInfoData);
1592   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceInterfaceDetailW(HDEVINFO DeviceInfoSet,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,PSP_DEVICE_INTERFACE_DETAIL_DATA_W DeviceInterfaceDetailData,DWORD DeviceInterfaceDetailDataSize,PDWORD RequiredSize,PSP_DEVINFO_DATA DeviceInfoData);
1593 #define SetupDiGetInterfaceDeviceDetailW SetupDiGetDeviceInterfaceDetailW
1594 #define SetupDiGetInterfaceDeviceDetailA SetupDiGetDeviceInterfaceDetailA
1595   WINSETUPAPI WINBOOL WINAPI SetupDiInstallDeviceInterfaces(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
1596 #define SetupDiInstallInterfaceDevices SetupDiInstallDeviceInterfaces
1597   WINSETUPAPI WINBOOL WINAPI SetupDiSetDeviceInterfaceDefault(HDEVINFO DeviceInfoSet,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,DWORD Flags,PVOID Reserved);
1598   WINSETUPAPI WINBOOL WINAPI SetupDiRegisterDeviceInfo(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD Flags,PSP_DETSIG_CMPPROC CompareProc,PVOID CompareContext,PSP_DEVINFO_DATA DupDeviceInfoData);
1599   WINSETUPAPI WINBOOL WINAPI SetupDiBuildDriverInfoList(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD DriverType);
1600   WINSETUPAPI WINBOOL WINAPI SetupDiCancelDriverInfoSearch(HDEVINFO DeviceInfoSet);
1601   WINSETUPAPI WINBOOL WINAPI SetupDiEnumDriverInfoA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD DriverType,DWORD MemberIndex,PSP_DRVINFO_DATA_A DriverInfoData);
1602   WINSETUPAPI WINBOOL WINAPI SetupDiEnumDriverInfoW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD DriverType,DWORD MemberIndex,PSP_DRVINFO_DATA_W DriverInfoData);
1603   WINSETUPAPI WINBOOL WINAPI SetupDiGetSelectedDriverA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DRVINFO_DATA_A DriverInfoData);
1604   WINSETUPAPI WINBOOL WINAPI SetupDiGetSelectedDriverW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DRVINFO_DATA_W DriverInfoData);
1605   WINSETUPAPI WINBOOL WINAPI SetupDiSetSelectedDriverA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DRVINFO_DATA_A DriverInfoData);
1606   WINSETUPAPI WINBOOL WINAPI SetupDiSetSelectedDriverW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DRVINFO_DATA_W DriverInfoData);
1607   WINSETUPAPI WINBOOL WINAPI SetupDiGetDriverInfoDetailA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DRVINFO_DATA_A DriverInfoData,PSP_DRVINFO_DETAIL_DATA_A DriverInfoDetailData,DWORD DriverInfoDetailDataSize,PDWORD RequiredSize);
1608   WINSETUPAPI WINBOOL WINAPI SetupDiGetDriverInfoDetailW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DRVINFO_DATA_W DriverInfoData,PSP_DRVINFO_DETAIL_DATA_W DriverInfoDetailData,DWORD DriverInfoDetailDataSize,PDWORD RequiredSize);
1609   WINSETUPAPI WINBOOL WINAPI SetupDiDestroyDriverInfoList(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD DriverType);
1610 
1611 #define DIGCF_DEFAULT 0x00000001
1612 #define DIGCF_PRESENT 0x00000002
1613 #define DIGCF_ALLCLASSES 0x00000004
1614 #define DIGCF_PROFILE 0x00000008
1615 #define DIGCF_DEVICEINTERFACE 0x00000010
1616 
1617 #define DIGCF_INTERFACEDEVICE DIGCF_DEVICEINTERFACE
1618 
1619 #define DIBCI_NOINSTALLCLASS 0x00000001
1620 #define DIBCI_NODISPLAYCLASS 0x00000002
1621 
1622 #define SetupDiGetClassDevs __MINGW_NAME_AW(SetupDiGetClassDevs)
1623 #define SetupDiGetClassDevsEx __MINGW_NAME_AW(SetupDiGetClassDevsEx)
1624 #define SetupDiGetINFClass __MINGW_NAME_AW(SetupDiGetINFClass)
1625 #define SetupDiBuildClassInfoListEx __MINGW_NAME_AW(SetupDiBuildClassInfoListEx)
1626 #define SetupDiGetClassDescription __MINGW_NAME_AW(SetupDiGetClassDescription)
1627 #define SetupDiGetClassDescriptionEx __MINGW_NAME_AW(SetupDiGetClassDescriptionEx)
1628 #define SetupDiInstallClass __MINGW_NAME_AW(SetupDiInstallClass)
1629 #define SetupDiInstallClassEx __MINGW_NAME_AW(SetupDiInstallClassEx)
1630 #define SetupDiOpenClassRegKeyEx __MINGW_NAME_AW(SetupDiOpenClassRegKeyEx)
1631 #define SetupDiCreateDeviceInterfaceRegKey __MINGW_NAME_AW(SetupDiCreateDeviceInterfaceRegKey)
1632 #define SetupDiCreateInterfaceDeviceRegKey __MINGW_NAME_AW(SetupDiCreateDeviceInterfaceRegKey)
1633 #define SetupDiCreateDevRegKey __MINGW_NAME_AW(SetupDiCreateDevRegKey)
1634 #define SetupDiGetHwProfileListEx __MINGW_NAME_AW(SetupDiGetHwProfileListEx)
1635 
1636   WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsA(CONST GUID *ClassGuid,PCSTR Enumerator,HWND hwndParent,DWORD Flags);
1637   WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsW(CONST GUID *ClassGuid,PCWSTR Enumerator,HWND hwndParent,DWORD Flags);
1638   WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsExA(CONST GUID *ClassGuid,PCSTR Enumerator,HWND hwndParent,DWORD Flags,HDEVINFO DeviceInfoSet,PCSTR MachineName,PVOID Reserved);
1639   WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsExW(CONST GUID *ClassGuid,PCWSTR Enumerator,HWND hwndParent,DWORD Flags,HDEVINFO DeviceInfoSet,PCWSTR MachineName,PVOID Reserved);
1640   WINSETUPAPI WINBOOL WINAPI SetupDiGetINFClassA(PCSTR InfName,LPGUID ClassGuid,PSTR ClassName,DWORD ClassNameSize,PDWORD RequiredSize);
1641   WINSETUPAPI WINBOOL WINAPI SetupDiGetINFClassW(PCWSTR InfName,LPGUID ClassGuid,PWSTR ClassName,DWORD ClassNameSize,PDWORD RequiredSize);
1642   WINSETUPAPI WINBOOL WINAPI SetupDiBuildClassInfoList(DWORD Flags,LPGUID ClassGuidList,DWORD ClassGuidListSize,PDWORD RequiredSize);
1643   WINSETUPAPI WINBOOL WINAPI SetupDiBuildClassInfoListExA(DWORD Flags,LPGUID ClassGuidList,DWORD ClassGuidListSize,PDWORD RequiredSize,PCSTR MachineName,PVOID Reserved);
1644   WINSETUPAPI WINBOOL WINAPI SetupDiBuildClassInfoListExW(DWORD Flags,LPGUID ClassGuidList,DWORD ClassGuidListSize,PDWORD RequiredSize,PCWSTR MachineName,PVOID Reserved);
1645   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassDescriptionA(CONST GUID *ClassGuid,PSTR ClassDescription,DWORD ClassDescriptionSize,PDWORD RequiredSize);
1646   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassDescriptionW(CONST GUID *ClassGuid,PWSTR ClassDescription,DWORD ClassDescriptionSize,PDWORD RequiredSize);
1647   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassDescriptionExA(CONST GUID *ClassGuid,PSTR ClassDescription,DWORD ClassDescriptionSize,PDWORD RequiredSize,PCSTR MachineName,PVOID Reserved);
1648   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassDescriptionExW(CONST GUID *ClassGuid,PWSTR ClassDescription,DWORD ClassDescriptionSize,PDWORD RequiredSize,PCWSTR MachineName,PVOID Reserved);
1649   WINSETUPAPI WINBOOL WINAPI SetupDiCallClassInstaller(DI_FUNCTION InstallFunction,HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
1650   WINSETUPAPI WINBOOL WINAPI SetupDiSelectDevice(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
1651   WINSETUPAPI WINBOOL WINAPI SetupDiSelectBestCompatDrv(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
1652   WINSETUPAPI WINBOOL WINAPI SetupDiInstallDevice(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
1653   WINSETUPAPI WINBOOL WINAPI SetupDiInstallDriverFiles(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
1654   WINSETUPAPI WINBOOL WINAPI SetupDiRegisterCoDeviceInstallers(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
1655   WINSETUPAPI WINBOOL WINAPI SetupDiRemoveDevice(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
1656   WINSETUPAPI WINBOOL WINAPI SetupDiUnremoveDevice(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
1657   WINSETUPAPI WINBOOL WINAPI SetupDiRestartDevices(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
1658   WINSETUPAPI WINBOOL WINAPI SetupDiChangeState(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
1659   WINSETUPAPI WINBOOL WINAPI SetupDiInstallClassA(HWND hwndParent,PCSTR InfFileName,DWORD Flags,HSPFILEQ FileQueue);
1660   WINSETUPAPI WINBOOL WINAPI SetupDiInstallClassW(HWND hwndParent,PCWSTR InfFileName,DWORD Flags,HSPFILEQ FileQueue);
1661   WINSETUPAPI WINBOOL WINAPI SetupDiInstallClassExA(HWND hwndParent,PCSTR InfFileName,DWORD Flags,HSPFILEQ FileQueue,CONST GUID *InterfaceClassGuid,PVOID Reserved1,PVOID Reserved2);
1662   WINSETUPAPI WINBOOL WINAPI SetupDiInstallClassExW(HWND hwndParent,PCWSTR InfFileName,DWORD Flags,HSPFILEQ FileQueue,CONST GUID *InterfaceClassGuid,PVOID Reserved1,PVOID Reserved2);
1663   WINSETUPAPI HKEY WINAPI SetupDiOpenClassRegKey(CONST GUID *ClassGuid,REGSAM samDesired);
1664 
1665 #define DIOCR_INSTALLER 0x00000001
1666 #define DIOCR_INTERFACE 0x00000002
1667 
1668   WINSETUPAPI HKEY WINAPI SetupDiOpenClassRegKeyExA(CONST GUID *ClassGuid,REGSAM samDesired,DWORD Flags,PCSTR MachineName,PVOID Reserved);
1669   WINSETUPAPI HKEY WINAPI SetupDiOpenClassRegKeyExW(CONST GUID *ClassGuid,REGSAM samDesired,DWORD Flags,PCWSTR MachineName,PVOID Reserved);
1670   WINSETUPAPI HKEY WINAPI SetupDiCreateDeviceInterfaceRegKeyA(HDEVINFO DeviceInfoSet,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,DWORD Reserved,REGSAM samDesired,HINF InfHandle,PCSTR InfSectionName);
1671   WINSETUPAPI HKEY WINAPI SetupDiCreateDeviceInterfaceRegKeyW(HDEVINFO DeviceInfoSet,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,DWORD Reserved,REGSAM samDesired,HINF InfHandle,PCWSTR InfSectionName);
1672 
1673 #define SetupDiCreateInterfaceDeviceRegKeyW SetupDiCreateDeviceInterfaceRegKeyW
1674 #define SetupDiCreateInterfaceDeviceRegKeyA SetupDiCreateDeviceInterfaceRegKeyA
1675 
1676   WINSETUPAPI HKEY WINAPI SetupDiOpenDeviceInterfaceRegKey(HDEVINFO DeviceInfoSet,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,DWORD Reserved,REGSAM samDesired);
1677 #define SetupDiOpenInterfaceDeviceRegKey SetupDiOpenDeviceInterfaceRegKey
1678   WINSETUPAPI WINBOOL WINAPI SetupDiDeleteDeviceInterfaceRegKey(HDEVINFO DeviceInfoSet,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,DWORD Reserved);
1679 #define SetupDiDeleteInterfaceDeviceRegKey SetupDiDeleteDeviceInterfaceRegKey
1680 
1681 #define DIREG_DEV 0x00000001
1682 #define DIREG_DRV 0x00000002
1683 #define DIREG_BOTH 0x00000004
1684 
1685   WINSETUPAPI HKEY WINAPI SetupDiCreateDevRegKeyA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD Scope,DWORD HwProfile,DWORD KeyType,HINF InfHandle,PCSTR InfSectionName);
1686   WINSETUPAPI HKEY WINAPI SetupDiCreateDevRegKeyW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD Scope,DWORD HwProfile,DWORD KeyType,HINF InfHandle,PCWSTR InfSectionName);
1687   WINSETUPAPI HKEY WINAPI SetupDiOpenDevRegKey(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD Scope,DWORD HwProfile,DWORD KeyType,REGSAM samDesired);
1688   WINSETUPAPI WINBOOL WINAPI SetupDiDeleteDevRegKey(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD Scope,DWORD HwProfile,DWORD KeyType);
1689   WINSETUPAPI WINBOOL WINAPI SetupDiGetHwProfileList(PDWORD HwProfileList,DWORD HwProfileListSize,PDWORD RequiredSize,PDWORD CurrentlyActiveIndex);
1690   WINSETUPAPI WINBOOL WINAPI SetupDiGetHwProfileListExA(PDWORD HwProfileList,DWORD HwProfileListSize,PDWORD RequiredSize,PDWORD CurrentlyActiveIndex,PCSTR MachineName,PVOID Reserved);
1691   WINSETUPAPI WINBOOL WINAPI SetupDiGetHwProfileListExW(PDWORD HwProfileList,DWORD HwProfileListSize,PDWORD RequiredSize,PDWORD CurrentlyActiveIndex,PCWSTR MachineName,PVOID Reserved);
1692 
1693 #define SPDRP_DEVICEDESC (0x00000000)
1694 #define SPDRP_HARDWAREID (0x00000001)
1695 #define SPDRP_COMPATIBLEIDS (0x00000002)
1696 #define SPDRP_UNUSED0 (0x00000003)
1697 #define SPDRP_SERVICE (0x00000004)
1698 #define SPDRP_UNUSED1 (0x00000005)
1699 #define SPDRP_UNUSED2 (0x00000006)
1700 #define SPDRP_CLASS (0x00000007)
1701 #define SPDRP_CLASSGUID (0x00000008)
1702 #define SPDRP_DRIVER (0x00000009)
1703 #define SPDRP_CONFIGFLAGS (0x0000000A)
1704 #define SPDRP_MFG (0x0000000B)
1705 #define SPDRP_FRIENDLYNAME (0x0000000C)
1706 #define SPDRP_LOCATION_INFORMATION (0x0000000D)
1707 #define SPDRP_PHYSICAL_DEVICE_OBJECT_NAME (0x0000000E)
1708 #define SPDRP_CAPABILITIES (0x0000000F)
1709 #define SPDRP_UI_NUMBER (0x00000010)
1710 #define SPDRP_UPPERFILTERS (0x00000011)
1711 #define SPDRP_LOWERFILTERS (0x00000012)
1712 #define SPDRP_BUSTYPEGUID (0x00000013)
1713 #define SPDRP_LEGACYBUSTYPE (0x00000014)
1714 #define SPDRP_BUSNUMBER (0x00000015)
1715 #define SPDRP_ENUMERATOR_NAME (0x00000016)
1716 #define SPDRP_SECURITY (0x00000017)
1717 #define SPDRP_SECURITY_SDS (0x00000018)
1718 #define SPDRP_DEVTYPE (0x00000019)
1719 #define SPDRP_EXCLUSIVE (0x0000001A)
1720 #define SPDRP_CHARACTERISTICS (0x0000001B)
1721 #define SPDRP_ADDRESS (0x0000001C)
1722 #define SPDRP_UI_NUMBER_DESC_FORMAT (0X0000001D)
1723 #define SPDRP_DEVICE_POWER_DATA (0x0000001E)
1724 #define SPDRP_REMOVAL_POLICY (0x0000001F)
1725 #define SPDRP_REMOVAL_POLICY_HW_DEFAULT (0x00000020)
1726 #define SPDRP_REMOVAL_POLICY_OVERRIDE (0x00000021)
1727 #define SPDRP_INSTALL_STATE (0x00000022)
1728 #define SPDRP_LOCATION_PATHS (0x00000023)
1729 #define SPDRP_MAXIMUM_PROPERTY (0x00000024)
1730 #define SPCRP_SECURITY (0x00000017)
1731 #define SPCRP_SECURITY_SDS (0x00000018)
1732 #define SPCRP_DEVTYPE (0x00000019)
1733 #define SPCRP_EXCLUSIVE (0x0000001A)
1734 #define SPCRP_CHARACTERISTICS (0x0000001B)
1735 #define SPCRP_MAXIMUM_PROPERTY (0x0000001C)
1736 
1737 #define SetupDiGetDeviceRegistryProperty __MINGW_NAME_AW(SetupDiGetDeviceRegistryProperty)
1738 #define SetupDiGetClassRegistryProperty __MINGW_NAME_AW(SetupDiGetClassRegistryProperty)
1739 #define SetupDiSetDeviceRegistryProperty __MINGW_NAME_AW(SetupDiSetDeviceRegistryProperty)
1740 #define SetupDiSetClassRegistryProperty __MINGW_NAME_AW(SetupDiSetClassRegistryProperty)
1741 #define SetupDiGetDeviceInstallParams __MINGW_NAME_AW(SetupDiGetDeviceInstallParams)
1742 #define SetupDiGetClassInstallParams __MINGW_NAME_AW(SetupDiGetClassInstallParams)
1743 #define SetupDiSetDeviceInstallParams __MINGW_NAME_AW(SetupDiSetDeviceInstallParams)
1744 #define SetupDiSetClassInstallParams __MINGW_NAME_AW(SetupDiSetClassInstallParams)
1745 #define SetupDiGetDriverInstallParams __MINGW_NAME_AW(SetupDiGetDriverInstallParams)
1746 #define SetupDiSetDriverInstallParams __MINGW_NAME_AW(SetupDiSetDriverInstallParams)
1747 #define SetupDiGetClassImageListEx __MINGW_NAME_AW(SetupDiGetClassImageListEx)
1748 #define SetupDiGetClassDevPropertySheets __MINGW_NAME_AW(SetupDiGetClassDevPropertySheets)
1749 #define SetupDiClassNameFromGuid __MINGW_NAME_AW(SetupDiClassNameFromGuid)
1750 #define SetupDiClassNameFromGuidEx __MINGW_NAME_AW(SetupDiClassNameFromGuidEx)
1751 #define SetupDiClassGuidsFromName __MINGW_NAME_AW(SetupDiClassGuidsFromName)
1752 #define SetupDiClassGuidsFromNameEx __MINGW_NAME_AW(SetupDiClassGuidsFromNameEx)
1753 #define SetupDiGetHwProfileFriendlyName __MINGW_NAME_AW(SetupDiGetHwProfileFriendlyName)
1754 #define SetupDiGetHwProfileFriendlyNameEx __MINGW_NAME_AW(SetupDiGetHwProfileFriendlyNameEx)
1755 #define SetupDiGetActualModelsSection __MINGW_NAME_AW(SetupDiGetActualModelsSection)
1756 #define SetupDiGetActualSectionToInstall __MINGW_NAME_AW(SetupDiGetActualSectionToInstall)
1757 #define SetupDiGetActualSectionToInstallEx __MINGW_NAME_AW(SetupDiGetActualSectionToInstallEx)
1758 #define SetupEnumInfSections __MINGW_NAME_AW(SetupEnumInfSections)
1759 
1760   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceRegistryPropertyA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD Property,PDWORD PropertyRegDataType,PBYTE PropertyBuffer,DWORD PropertyBufferSize,PDWORD RequiredSize);
1761   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceRegistryPropertyW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD Property,PDWORD PropertyRegDataType,PBYTE PropertyBuffer,DWORD PropertyBufferSize,PDWORD RequiredSize);
1762   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassRegistryPropertyA(CONST GUID *ClassGuid,DWORD Property,PDWORD PropertyRegDataType,PBYTE PropertyBuffer,DWORD PropertyBufferSize,PDWORD RequiredSize,PCSTR MachineName,PVOID Reserved);
1763   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassRegistryPropertyW(CONST GUID *ClassGuid,DWORD Property,PDWORD PropertyRegDataType,PBYTE PropertyBuffer,DWORD PropertyBufferSize,PDWORD RequiredSize,PCWSTR MachineName,PVOID Reserved);
1764   WINSETUPAPI WINBOOL WINAPI SetupDiSetDeviceRegistryPropertyA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD Property,CONST BYTE *PropertyBuffer,DWORD PropertyBufferSize);
1765   WINSETUPAPI WINBOOL WINAPI SetupDiSetDeviceRegistryPropertyW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD Property,CONST BYTE *PropertyBuffer,DWORD PropertyBufferSize);
1766   WINSETUPAPI WINBOOL WINAPI SetupDiSetClassRegistryPropertyA(CONST GUID *ClassGuid,DWORD Property,CONST BYTE *PropertyBuffer,DWORD PropertyBufferSize,PCSTR MachineName,PVOID Reserved);
1767   WINSETUPAPI WINBOOL WINAPI SetupDiSetClassRegistryPropertyW(CONST GUID *ClassGuid,DWORD Property,CONST BYTE *PropertyBuffer,DWORD PropertyBufferSize,PCWSTR MachineName,PVOID Reserved);
1768   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceInstallParamsA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DEVINSTALL_PARAMS_A DeviceInstallParams);
1769   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceInstallParamsW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DEVINSTALL_PARAMS_W DeviceInstallParams);
1770   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassInstallParamsA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_CLASSINSTALL_HEADER ClassInstallParams,DWORD ClassInstallParamsSize,PDWORD RequiredSize);
1771   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassInstallParamsW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_CLASSINSTALL_HEADER ClassInstallParams,DWORD ClassInstallParamsSize,PDWORD RequiredSize);
1772   WINSETUPAPI WINBOOL WINAPI SetupDiSetDeviceInstallParamsA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DEVINSTALL_PARAMS_A DeviceInstallParams);
1773   WINSETUPAPI WINBOOL WINAPI SetupDiSetDeviceInstallParamsW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DEVINSTALL_PARAMS_W DeviceInstallParams);
1774   WINSETUPAPI WINBOOL WINAPI SetupDiSetClassInstallParamsA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_CLASSINSTALL_HEADER ClassInstallParams,DWORD ClassInstallParamsSize);
1775   WINSETUPAPI WINBOOL WINAPI SetupDiSetClassInstallParamsW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_CLASSINSTALL_HEADER ClassInstallParams,DWORD ClassInstallParamsSize);
1776   WINSETUPAPI WINBOOL WINAPI SetupDiGetDriverInstallParamsA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DRVINFO_DATA_A DriverInfoData,PSP_DRVINSTALL_PARAMS DriverInstallParams);
1777   WINSETUPAPI WINBOOL WINAPI SetupDiGetDriverInstallParamsW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DRVINFO_DATA_W DriverInfoData,PSP_DRVINSTALL_PARAMS DriverInstallParams);
1778   WINSETUPAPI WINBOOL WINAPI SetupDiSetDriverInstallParamsA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DRVINFO_DATA_A DriverInfoData,PSP_DRVINSTALL_PARAMS DriverInstallParams);
1779   WINSETUPAPI WINBOOL WINAPI SetupDiSetDriverInstallParamsW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DRVINFO_DATA_W DriverInfoData,PSP_DRVINSTALL_PARAMS DriverInstallParams);
1780   WINSETUPAPI WINBOOL WINAPI SetupDiLoadClassIcon(CONST GUID *ClassGuid,HICON *LargeIcon,PINT MiniIconIndex);
1781 
1782 #define DMI_MASK 0x00000001
1783 #define DMI_BKCOLOR 0x00000002
1784 #define DMI_USERECT 0x00000004
1785 
1786   WINSETUPAPI INT WINAPI SetupDiDrawMiniIcon(HDC hdc,RECT rc,INT MiniIconIndex,DWORD Flags);
1787   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassBitmapIndex(CONST GUID *ClassGuid,PINT MiniIconIndex);
1788   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassImageList(PSP_CLASSIMAGELIST_DATA ClassImageListData);
1789   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassImageListExA(PSP_CLASSIMAGELIST_DATA ClassImageListData,PCSTR MachineName,PVOID Reserved);
1790   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassImageListExW(PSP_CLASSIMAGELIST_DATA ClassImageListData,PCWSTR MachineName,PVOID Reserved);
1791   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassImageIndex(PSP_CLASSIMAGELIST_DATA ClassImageListData,CONST GUID *ClassGuid,PINT ImageIndex);
1792   WINSETUPAPI WINBOOL WINAPI SetupDiDestroyClassImageList(PSP_CLASSIMAGELIST_DATA ClassImageListData);
1793 
1794 #define DIGCDP_FLAG_BASIC 0x00000001
1795 #define DIGCDP_FLAG_ADVANCED 0x00000002
1796 #define DIGCDP_FLAG_REMOTE_BASIC 0x00000003
1797 #define DIGCDP_FLAG_REMOTE_ADVANCED 0x00000004
1798 
1799   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassDevPropertySheetsA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,LPPROPSHEETHEADERA PropertySheetHeader,DWORD PropertySheetHeaderPageListSize,PDWORD RequiredSize,DWORD PropertySheetType);
1800   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassDevPropertySheetsW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,LPPROPSHEETHEADERW PropertySheetHeader,DWORD PropertySheetHeaderPageListSize,PDWORD RequiredSize,DWORD PropertySheetType);
1801 
1802 #define IDI_RESOURCEFIRST 159
1803 #define IDI_RESOURCE 159
1804 #define IDI_RESOURCELAST 161
1805 #define IDI_RESOURCEOVERLAYFIRST 161
1806 #define IDI_RESOURCEOVERLAYLAST 161
1807 #define IDI_CONFLICT 161
1808 
1809 #define IDI_CLASSICON_OVERLAYFIRST 500
1810 #define IDI_CLASSICON_OVERLAYLAST 502
1811 #define IDI_PROBLEM_OVL 500
1812 #define IDI_DISABLED_OVL 501
1813 #define IDI_FORCED_OVL 502
1814 
1815   WINSETUPAPI WINBOOL WINAPI SetupDiAskForOEMDisk(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
1816   WINSETUPAPI WINBOOL WINAPI SetupDiSelectOEMDrv(HWND hwndParent,HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
1817   WINSETUPAPI WINBOOL WINAPI SetupDiClassNameFromGuidA(CONST GUID *ClassGuid,PSTR ClassName,DWORD ClassNameSize,PDWORD RequiredSize);
1818   WINSETUPAPI WINBOOL WINAPI SetupDiClassNameFromGuidW(CONST GUID *ClassGuid,PWSTR ClassName,DWORD ClassNameSize,PDWORD RequiredSize);
1819   WINSETUPAPI WINBOOL WINAPI SetupDiClassNameFromGuidExA(CONST GUID *ClassGuid,PSTR ClassName,DWORD ClassNameSize,PDWORD RequiredSize,PCSTR MachineName,PVOID Reserved);
1820   WINSETUPAPI WINBOOL WINAPI SetupDiClassNameFromGuidExW(CONST GUID *ClassGuid,PWSTR ClassName,DWORD ClassNameSize,PDWORD RequiredSize,PCWSTR MachineName,PVOID Reserved);
1821   WINSETUPAPI WINBOOL WINAPI SetupDiClassGuidsFromNameA(PCSTR ClassName,LPGUID ClassGuidList,DWORD ClassGuidListSize,PDWORD RequiredSize);
1822   WINSETUPAPI WINBOOL WINAPI SetupDiClassGuidsFromNameW(PCWSTR ClassName,LPGUID ClassGuidList,DWORD ClassGuidListSize,PDWORD RequiredSize);
1823   WINSETUPAPI WINBOOL WINAPI SetupDiClassGuidsFromNameExA(PCSTR ClassName,LPGUID ClassGuidList,DWORD ClassGuidListSize,PDWORD RequiredSize,PCSTR MachineName,PVOID Reserved);
1824   WINSETUPAPI WINBOOL WINAPI SetupDiClassGuidsFromNameExW(PCWSTR ClassName,LPGUID ClassGuidList,DWORD ClassGuidListSize,PDWORD RequiredSize,PCWSTR MachineName,PVOID Reserved);
1825   WINSETUPAPI WINBOOL WINAPI SetupDiGetHwProfileFriendlyNameA(DWORD HwProfile,PSTR FriendlyName,DWORD FriendlyNameSize,PDWORD RequiredSize);
1826   WINSETUPAPI WINBOOL WINAPI SetupDiGetHwProfileFriendlyNameW(DWORD HwProfile,PWSTR FriendlyName,DWORD FriendlyNameSize,PDWORD RequiredSize);
1827   WINSETUPAPI WINBOOL WINAPI SetupDiGetHwProfileFriendlyNameExA(DWORD HwProfile,PSTR FriendlyName,DWORD FriendlyNameSize,PDWORD RequiredSize,PCSTR MachineName,PVOID Reserved);
1828   WINSETUPAPI WINBOOL WINAPI SetupDiGetHwProfileFriendlyNameExW(DWORD HwProfile,PWSTR FriendlyName,DWORD FriendlyNameSize,PDWORD RequiredSize,PCWSTR MachineName,PVOID Reserved);
1829 
1830 #define SPWPT_SELECTDEVICE 0x00000001
1831 #define SPWP_USE_DEVINFO_DATA 0x00000001
1832 
1833   WINSETUPAPI HPROPSHEETPAGE WINAPI SetupDiGetWizardPage(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_INSTALLWIZARD_DATA InstallWizardData,DWORD PageType,DWORD Flags);
1834   WINSETUPAPI WINBOOL WINAPI SetupDiGetSelectedDevice(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
1835   WINSETUPAPI WINBOOL WINAPI SetupDiSetSelectedDevice(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
1836   WINSETUPAPI WINBOOL WINAPI SetupDiGetActualModelsSectionA(PINFCONTEXT Context,PSP_ALTPLATFORM_INFO AlternatePlatformInfo,PSTR InfSectionWithExt,DWORD InfSectionWithExtSize,PDWORD RequiredSize,PVOID Reserved);
1837   WINSETUPAPI WINBOOL WINAPI SetupDiGetActualModelsSectionW(PINFCONTEXT Context,PSP_ALTPLATFORM_INFO AlternatePlatformInfo,PWSTR InfSectionWithExt,DWORD InfSectionWithExtSize,PDWORD RequiredSize,PVOID Reserved);
1838   WINSETUPAPI WINBOOL WINAPI SetupDiGetActualSectionToInstallA(HINF InfHandle,PCSTR InfSectionName,PSTR InfSectionWithExt,DWORD InfSectionWithExtSize,PDWORD RequiredSize,PSTR *Extension);
1839   WINSETUPAPI WINBOOL WINAPI SetupDiGetActualSectionToInstallW(HINF InfHandle,PCWSTR InfSectionName,PWSTR InfSectionWithExt,DWORD InfSectionWithExtSize,PDWORD RequiredSize,PWSTR *Extension);
1840   WINSETUPAPI WINBOOL WINAPI SetupDiGetActualSectionToInstallExA(HINF InfHandle,PCSTR InfSectionName,PSP_ALTPLATFORM_INFO AlternatePlatformInfo,PSTR InfSectionWithExt,DWORD InfSectionWithExtSize,PDWORD RequiredSize,PSTR *Extension,PVOID Reserved);
1841   WINSETUPAPI WINBOOL WINAPI SetupDiGetActualSectionToInstallExW(HINF InfHandle,PCWSTR InfSectionName,PSP_ALTPLATFORM_INFO AlternatePlatformInfo,PWSTR InfSectionWithExt,DWORD InfSectionWithExtSize,PDWORD RequiredSize,PWSTR *Extension,PVOID Reserved);
1842   WINSETUPAPI WINBOOL WINAPI SetupEnumInfSectionsA (HINF InfHandle,UINT Index,PSTR Buffer,UINT Size,UINT *SizeNeeded);
1843   WINSETUPAPI WINBOOL WINAPI SetupEnumInfSectionsW (HINF InfHandle,UINT Index,PWSTR Buffer,UINT Size,UINT *SizeNeeded);
1844 
1845   typedef struct _SP_INF_SIGNER_INFO_A {
1846     DWORD cbSize;
1847     CHAR CatalogFile[MAX_PATH];
1848     CHAR DigitalSigner[MAX_PATH];
1849     CHAR DigitalSignerVersion[MAX_PATH];
1850   } SP_INF_SIGNER_INFO_A,*PSP_INF_SIGNER_INFO_A;
1851 
1852   typedef struct _SP_INF_SIGNER_INFO_W {
1853     DWORD cbSize;
1854     WCHAR CatalogFile[MAX_PATH];
1855     WCHAR DigitalSigner[MAX_PATH];
1856     WCHAR DigitalSignerVersion[MAX_PATH];
1857   } SP_INF_SIGNER_INFO_W,*PSP_INF_SIGNER_INFO_W;
1858 
1859   __MINGW_TYPEDEF_UAW(SP_INF_SIGNER_INFO)
1860   __MINGW_TYPEDEF_UAW(PSP_INF_SIGNER_INFO)
1861 
1862 #define SetupVerifyInfFile __MINGW_NAME_AW(SetupVerifyInfFile)
1863 #define SetupDiGetCustomDeviceProperty __MINGW_NAME_AW(SetupDiGetCustomDeviceProperty)
1864 #define SetupConfigureWmiFromInfSection __MINGW_NAME_AW(SetupConfigureWmiFromInfSection)
1865 
1866   WINSETUPAPI WINBOOL WINAPI SetupVerifyInfFileA(PCSTR InfName,PSP_ALTPLATFORM_INFO AltPlatformInfo,PSP_INF_SIGNER_INFO_A InfSignerInfo);
1867   WINSETUPAPI WINBOOL WINAPI SetupVerifyInfFileW(PCWSTR InfName,PSP_ALTPLATFORM_INFO AltPlatformInfo,PSP_INF_SIGNER_INFO_W InfSignerInfo);
1868 
1869 #define DICUSTOMDEVPROP_MERGE_MULTISZ 0x00000001
1870 
1871   WINSETUPAPI WINBOOL WINAPI SetupDiGetCustomDevicePropertyA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PCSTR CustomPropertyName,DWORD Flags,PDWORD PropertyRegDataType,PBYTE PropertyBuffer,DWORD PropertyBufferSize,PDWORD RequiredSize);
1872   WINSETUPAPI WINBOOL WINAPI SetupDiGetCustomDevicePropertyW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PCWSTR CustomPropertyName,DWORD Flags,PDWORD PropertyRegDataType,PBYTE PropertyBuffer,DWORD PropertyBufferSize,PDWORD RequiredSize);
1873 
1874 #define SCWMI_CLOBBER_SECURITY 0x00000001
1875 
1876   WINSETUPAPI WINBOOL WINAPI SetupConfigureWmiFromInfSectionA(HINF InfHandle,PCSTR SectionName,DWORD Flags);
1877   WINSETUPAPI WINBOOL WINAPI SetupConfigureWmiFromInfSectionW(HINF InfHandle,PCWSTR SectionName,DWORD Flags);
1878 
1879 #if _WIN32_WINNT >= 0x0600
1880   WINSETUPAPI WINBOOL WINAPI SetupDiGetDevicePropertyW(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, const DEVPROPKEY *PropertyKey, DEVPROPTYPE *PropertyType, PBYTE PropertyBuffer, DWORD PropertyBufferSize, PDWORD RequiredSize, DWORD Flags);
1881   WINSETUPAPI WINBOOL WINAPI SetupDiGetDevicePropertyKeys(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DEVPROPKEY *PropertyKeyArray, DWORD PropertyKeyCount, PDWORD RequiredPropertyKeyCount, DWORD Flags);
1882 #endif
1883 
1884 #ifdef __cplusplus
1885 }
1886 #endif
1887 
1888 #include <poppack.h>
1889 #endif
1890