root/trunk/win32/setupapi.d

Revision 352, 81.5 kB (checked in by Yu Hozuki, 2 years ago)

Many argument types and return types were improved to const using CPtr template.
They follow the original headers.

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